2015-08-06 3 views
0

Я пытаюсь отправить 2 парама из представления с JavaScript в Controler, но я получаю эту ошибку. Не знаю, почему .. Failed to load resource: the server responded with a status of 500 (Internal Server Error)Не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера) MVC JAVASCRIPT

transfer.js $(document).ready(function() { $("#transferPlayerButton").click(function() {

var playerId = document.getElementById("id_player").value; 
    var teamId = document.getElementById("id_team").value; 

    $.ajax({ 
     type: 'post', 
     url: '/Player/TransferPlayer', 
     data: 
      { 
       playerId: playerId, 
       newTeamId: teamId 
      }, 
     contentType: 'application/json;charset=utf-8', 
     dataType: 'json', 
     success: function (data) { 
      alert("Success!"); 
     } 


    }); 

}); 

});

контроллер

[HttpPost] 
    public ActionResult TransferPlayer(int playerId, int newTeamId) 
    { 
     return Content(string.Format("Player {0} it is now at team {1}.", playerId, newTeamId)); 
    } 

и это мой VI РЭБ. Я был привязан к объекту базы данных obj, но я понимаю, почему я получаю эту ошибку 500. Нужна помощь. I`ma новичок в MVC/JavaScript

@model FotballTeamsProject.Models.PlayerModels.PlayerTransferModel 


    <script src="@Url.Content("~/Scripts/Player/Transfer.js")"></script> 
    <script type="text/javascript"> 
    var transferUrl= "@Url.Action("TransferPlayer", "Player")"; 
    </script> 
    <table> 
    <thead> 
    <tr> 
     <th>ID</th> 
     <th>Nume</th> 
     <th>Prenume</th> 
     <th></th> 
     <th>Skill</th> 
     <th>Valoare</th> 
     <th></th> 
     <th>Echipa Actuala</th> 
     <th style="margin-right: 10px;">Echipa Viitoare</th> 

    </tr> 
</thead> 
<tbody> 

     <tr> 
      <td id="id_player">@Model.Player.id_player</td> 
      <td>@Model.Player.player_firstname</td> 
      <td>@Model.Player.player_surname</td> 
      <td></td> 
      <td>@Model.Player.player_skill</td> 

      <td>@Model.Player.player_value</td> 
      <td></td> 
      <td>@Model.Player.name_team</td> 
      <td style="text-align: right;"> 
       <select id="id_team"> 
        <option selected="selected" value="0">Fara echipa</option> 
        @foreach (var teamInfo in Model.Teams) 
        { 
         <option value="@teamInfo.Key">@teamInfo.Value</option> 
        } 
       </select> 
      </td> 
      </tr> 

</table> 
</tbody> 
    <p> 
     <input id="transferPlayerButton" type="button" value="Transfera" /> 
    </p> 
+0

Я не уверен, если это основная причина, но .value на ячейку таблицы не даст вы используете id_player, вместо этого вы должны использовать innerText. Это может привести к тому, что playerId будет пустым в вашем сообщении. Вы пытались поставить точку останова на свой метод Action и отлаживать? Удалась ли ваша точка останова? Каковы значения параметров, если они есть? – John

+0

Да, я поставил точку останова, и он не попал. –

+0

сначала положил js 'Transfer.js' непосредственно перед тегом body – wiretext

ответ

0

В вызове AJAX, передать данные следующим образом:

data: JSON.stringify({ playerId: playerId, newTeamId: teamId }),

При размещении данных, как вы, это выглядит следующим образом:

playerId=1&newTeamId=2

Но в настройках AJAX в contentType установлен в 'приложения/JSON, кодировка = UTF-8', что означает данные должны быть переданы в формате JSON. Поскольку данные не передаются в формате JSON, связующее устройство MVC не может выполнить свою работу и получать данные из тела запроса (поскольку, по его мнению, были данные JSON, идущие вдоль wite, из-за contentType).

При использовании JSON.stringify данные будут переданы, как это в теле запроса:

{ 
    newTeamId: "2" 
    playerId: "1" 
} 
+0

Я могу отправить param newTeamId param прямо сейчас, но playerId не работает , я не знаю, почему, но я пойму. спасибо большое –

+0

Вы пробовали 'JSON.stringify()' в соответствии с моим ответом? Это действительно работает, я уже устал от этого. Спасите себя от хлопот, дайте 'JSON.stringify()' сначала. –

+0

Да, работал, у меня была небольшая проблема при var playerId = $ ("# id_player"). Html(); Я не обращал внимания. Спасибо –