7

我正在开发一个使用 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" });
    }
}

我的 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) {
}

在 Fiddler 中,我注意到返回了 500 错误。响应中的 TITLE 字段显示:“无效的 JSON 原语:itemID”。

我究竟做错了什么?

谢谢!

4

4 回答 4

11

请务必发送 JSON:

data: json,

应该

data: JSON.stringify(json),

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

注意:戴夫 A 的回答也是正确的,但没有直接回答您的问题。我 +1 了。

于 2013-02-07T13:56:03.400 回答
6

你这里似乎不需要 JSON。理想情况下,id 参数将在您的 URI 中传递:

 url: "/myController/removeItem/"+id

这可能就是您的 Action 无法识别的原因。它需要一个参数。

跟进:批评者指出传递的数据是一个字符串,因此不能作为 id 传递是不正确的。我应该指出应该将 action 方法重写为 accept string id

于 2013-02-07T13:54:12.730 回答
4
          function removeItem(id) {
  var json = { "itemID": id };
  $.ajax({
    type: "POST",
    url: "/myController/removeItem",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(json),
    dataType: "json",
    success: removeItemCompleted,
    error: removeItemFailed
  });
}

function removeItemCompleted(results) {
}

function removeItemFailed(request, status, error) {
}
于 2013-08-12T04:42:38.367 回答
0

使用此代码:

$('#delete').click(function () {
        var APIURL = "/api/products";
        var id = $('#SearchText').val();
        $.ajax({
            type: "DELETE",
            url: APIURL + '/' + id,
            success: function (data) {
                alert('Employee deleted');
            }
        });
    });
于 2013-07-25T20:01:16.490 回答