0

私はいくつかの値を MVC コントローラーに渡していますが、json 値を返しています。問題は、コントローラー側の値が正しく返されることですが、jquery で確認すると、未定義のデータが表示されます。

コントローラーコード:

[HttpPost]
[Authorize]
public ActionResult DeleteServices(List<Int32> serMapId)
{
  int success = -1;
  if (serMapId.Count > 0 )
  {
    int count = RequestDL.DelServices(serMapId);
    if (count > 0)
    {
      success = count;
    }
  }
  return Json(new { success });
}

Jquery Ajax スクリプト:

$.ajax({
  url: "/CRM/DeleteServices",
  type: "POST",
  data: postData,
  success: function (result) {
   alert(result.success);
   if (result.success > 0) {
     alert("Service(s) deleted successfully");
   }
   else {
     alert("Service(s) not deleted successfully");
   }
  },
  error: function () {
   alert("Something goes wrong at server side.");
  }
});

前もって感謝します。

4

3 に答える 3

2

これに対する応答を変更してみてください

return Json(new { success = success });

また

return Json(new { success });

簡単なテストを行うと、次の結果が得られます。

//Returns 1
//this is not a valid JSON object
//If 'success' were a complex object, this would work as expected
return Json(success);

//Returns {"success":1}
return Json(new { success });

//Returns {"success":1}
return Json(new { success = success });
于 2013-05-07T07:26:36.050 に答える
0

GET リクエストに対して、この方法で成功オブジェクトを返してみてください。

return Json(success, JsonRequestBehavior.AllowGet);

Json を次のように POST に返します。

return Json(success);

コントローラーが次のようになるように、メソッドを HttpPost で装飾することを忘れないでください

[HttpPost]
[Authorize]
public ActionResult DeleteServices(List<Int32> serMapId)
{
  int success = -1;
  if (serMapId.Count > 0 )
  {
    int count = RequestDL.DelServices(serMapId);
    if (count > 0)
    {
      success = count;
    }
  }
  return Json(success);
}

Ajax リクエストが次のようにフォーマットされていることを確認します。

$.ajax({
  url: "/CRM/DeleteServices",
  type: "POST",
  data: postData,
  dataType: 'json',
  success: function (result) {
   alert(result.success);
   if (result.success > 0) {
     alert("Service(s) deleted successfully");
   }
   else {
     alert("Service(s) not deleted successfully");
   }
  },
  error: function () {
   alert("Something goes wrong at server side.");
  }
});
于 2013-05-07T06:36:14.090 に答える