7

私は ASP.NET MVC 4 を使用するアプリに取り組んでいます。いくつかの点で、すべてをゼロから学んでいるように感じます :)。その価値があると言われています。

コントローラーのアクションに JSON をポストする必要があります。私のアクションは次のようになります。

[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 以下では shim が必要です: https://github.com/douglascrockford/JSON-js

注: Dave A の回答も正しいですが、問題に直接回答するものではありません。+1しました。

于 2013-02-07T13:56:03.400 に答える
6

ここでは JSON は必要ないようです。理想的には、id パラメータは URI で渡されます。

 url: "/myController/removeItem/"+id

これがおそらく、あなたのアクションを識別できない理由です。パラメータが必要です。

フォローアップ:渡されたデータは文字列であるため、id として渡すことができないと指摘する批評家は正しくありません。action メソッドを acceptに書き直す必要があることを指摘する必要string idがありました。

于 2013-02-07T13:54:12.730 に答える
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 に答える