从JQuery发布JSON到ASP.NET MVC 4操作

Bil*_*nes 7 c# asp.net-mvc jquery json asp.net-mvc-4

我正在开发一个使用ASP.NET MVC 4的应用程序.在某些方面,我觉得我从头开始学习一切:).我被告知它值得.

我需要在控制器中将一些JSON发布到Action.我的行动如下:

[Authorize]
public class MyController : Controller
{
    [HttpPost]
    public ActionResult RemoveItem(string itemID)
    {
      // Do stuff...
      return Json(new { Status = 1, Message="Success" });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的JQuery代码如下所示:

function removeItem(id) {
  var json = { "itemID": id };
  $.ajax({
    type: "POST",
    url: "/myController/removeItem",
    contentType: "application/json; charset=utf-8",
    data: json,
    dataType: "json",
    success: removeItemCompleted,
    error: removeItemFailed
  });
}

function removeItemCompleted(results) {
}

function removeItemFailed(request, status, error) {
}
Run Code Online (Sandbox Code Playgroud)

在Fiddler中,我注意到返回了500错误.响应中的TITLE字段说:"无效的JSON原语:itemID".

我究竟做错了什么?

谢谢!

Joe*_*Joe 10

一定要发送JSON:

data: json,
Run Code Online (Sandbox Code Playgroud)

应该

data: JSON.stringify(json),
Run Code Online (Sandbox Code Playgroud)

IE7及以下需要垫片:https://github.com/douglascrockford/JSON-js

注意:Dave A的答案也是正确的,但不直接回答您的问题.我+ 1了.


Dav*_*ich 6

你似乎不需要JSON.理想情况下,id param将在您的URI中传递:

 url: "/myController/removeItem/"+id
Run Code Online (Sandbox Code Playgroud)

这可能是您的行动无法识别的原因.它需要一个参数.

跟进:批评者指出传递的数据是一个字符串,因此id不能传递.我应该指出应该重写动作方法以接受string id.