Json没有得到实际的数据
问题描述:
我传递了一些值给MVC控制器,它返回的是json值。现在的问题是,控制器方面,价值正常返回,但当我检查它在jQuery中,它显示未定义的数据。Json没有得到实际的数据
控制器代码:
[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.");
}
});
预先感谢您。
答
尝试改变这种
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 });
答
尝试使用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请求格式化为t他:
$.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.");
}
});
尝试'返回JSON(成功);' – 2013-05-07 06:35:35
你的代码看起来好为止。你有没有检查过提琴手什么是通过电线传输的?你在你的JavaScript成功处理程序中设置了一个断点并查看结果有什么值? – Jan 2013-05-07 06:36:04
@AliRızaAdıyahşi,它不工作... – Dhwani 2013-05-07 06:38:01