2013-07-24 4 views
2

Я звоню метод ASP.NET MVC 4 управления из JavaScript (в файле cshtml) с помощью $ .ajax(), как показано нижеВызов ASP.NET MVC 4 контроллера от Javascript

 $.ajax({ 
      url: '@Url.Action("MyAction", "MyController")', 
      type: 'GET', 
      data: { 'id': "123"}, 
      contentType: "application/json; charset=utf-8", 
      dataType: 'json', 
      success: function (data) { 
      } 
     }); 

Контроллер метод действия:

public JsonResult MyAction(string id) 
    { 
     // Do stuff 
     return new JsonResult(); 
    } 

который получил название ok, но вызывает GET 500 (Internal Server Error).

Меня не волнуют возвращенные данные, которые я просто хочу назвать методом контроллера для обновления модели.

Может кто-нибудь сообщить мне, почему я получаю 500 или альтернативный способ сделать это, что было бы здорово.

+2

Похоже, проблема заключается в '// Do stuff' код .. – YD1m

+1

Должен быть 'return new JsonResult (/ * stuff * /, JsonRequestBehavior.AllowedGet);'? –

+0

Это просто владелец места, на данный момент контроллер фактически ничего не делает. Метод такой, как показано. – PaulN

ответ

4

По соображениям безопасности вы не можете использовать метод GET в запросах ajax (см. JSON Hijacking).

Вы просто должны сделать это так:

return Json(data, JsonRequestBehavior.AllowGet) 

или лучше, изменить способ размещать

type: 'POST', 
Смежные вопросы