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."); 
    } 
}); 

预先感谢您。

+1

尝试'返回JSON(成功);' – 2013-05-07 06:35:35

+1

你的代码看起来好为止。你有没有检查过提琴手什么是通过电线传输的?你在你的JavaScript成功处理程序中设置了一个断点并查看结果有什么值? – Jan 2013-05-07 06:36:04

+0

@AliRızaAdıyahşi,它不工作... – Dhwani 2013-05-07 06:38:01

尝试改变这种

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 }); 
+0

感谢这工作。顺便说一句,这是什么原因? – Dhwani 2013-05-07 07:52:31

+1

'new {success = success}'与'new {success}'相同! – Jan 2013-05-07 07:56:26

+0

虽然新{成功}不工作...奇怪... – Dhwani 2013-05-07 07:57:04

尝试使用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."); 
    } 
}); 
+0

我试过你的方式,但它不工作。显示相同的错误。 – Dhwani 2013-05-07 06:45:29

+0

ASP.Net MVC响应可以像文本一样被解释。请确保将内容类型包含在JQuery请求中。 – Matt 2013-05-07 06:51:02

+0

我试过我们的代码,但它现在不在控制器中。 – Dhwani 2013-05-07 06:55:23

添加

数据类型: 'JSON',

在$就功能

$.ajax({ 
     url: "/CRM/DeleteServices", 
     type: "POST", 
     data: postData, 
     dataType:'json', 
    }); 
+0

它不工作。 – Dhwani 2013-05-07 07:29:19

+0

什么将是您的回复数据 – jasse 2013-05-07 08:36:01