问题描述
这是我的控制器操作中的代码:
Here is the code in my Controller Action:
[HttpPost]
public JsonResult MyAction()
{
try
{
// Do something...
return Json(new { Success = true });
}
catch(Exception ex)
{
return Json(new { Error = ex.Message });
}
}
而且,这是我的脚本:
<script>
$.ajax({
type: "POST",
url: '@Url.Action("MyAction", "MyController")',
dataType: 'json'
}).done(function (data) {
alert(data.Success);
}
})
.fail(function (data) {
alert(data.Error);
});
</script>
这成功完成(警报正确显示为"true"),但是当操作失败时,alert(data.Error)
显示Undefined
.
This works on success (the alert correctly shows "true"), but when the action fails, alert(data.Error)
shows Undefined
.
使用FireBug,我可以看到JSON数据已正确返回.为什么data.Error
为未定义"?
Using FireBug, I can see that the JSON data is correctly returned. Why is data.Error
"Undefined" then?
更新2:
对不起,我的代码出了点问题(不是这里的代码,而是我正在运行的代码). console.log(data)
的正确输出是这样的:
Sorry, there was something wrong with my code (not the code here, but the code I was running). The correct output from console.log(data)
is this:
Object {Error="Some error."}
推荐答案
来自服务器的两个响应都是成功的json响应.就客户端而言,有关该请求的所有信息均未失败.试试这个:
Both responses from the server are successful json responses. As far as the client is concerned, nothing about the request has failed. Try this:
$.ajax({
type: "POST",
url: '@Url.Action("MyAction", "MyController")',
dataType: 'json'
}).done(function (data) {
if (data.Success) {
alert('success!');
} else {
alert(data.Error);
}
})
这篇关于jQuery.ajax响应数据未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!