【发布时间】:2013-04-03 03:02:02
【问题描述】:
我使用ASP.NET MVC 从 jQuery 发布 JSON,并使用这个小库函数返回一些 JSON:
(function($) {
$.postJson = function(url, data) {
return $.ajax({
url: url,
data: JSON.stringify(data),
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
};
})(jQuery);
所以很明显我会这样称呼它:
$('#button').click(function() {
$.postJson('/controller/action', { Prop1: 'hi', Prop2: 'bye' })
.done(function(r) { alert('It worked.'); })
.fail(function(x) { alert('Fail! ' + x.status); });
});
ASP.NET MVC 3 和 ASP.NET MVC 4 支持事物的提交方面(在此之前您需要扩展 ASP.NET MVC 以处理提交 JSON),但我遇到的问题是返回。在控制器上,我经常返回 null 基本上是说“成功,没什么好说的”,例如:
[HttpPost]
public JsonResult DoSomething(string Prop1, string Prop2)
{
if (doSomething(Prop1, Prop2)
return Json(null); // Success
return Json(new { Message = "It didn't work for the following reasons" });
}
我经常使用这种模式,它工作正常 - 我的成功/完成回调被调用,一切都很好。但最近我升级了 ASP.NET MVC 和 jQuery,但它停止了工作 - 相反,每当我 return Json(null); 时,我的失败回调就会被调用。此外,我检查了响应,返回的 statusCode 实际上是 200,所以服务器没有失败 - jQuery 只是说它是。
【问题讨论】:
-
顺便说一句,
exception.message中的全局$(document).ajaxError...显示:“Unexpected end of input”当Json(null)返回时(只是提一下,它没有帮助我来找出问题的原因)。
标签: jquery ajax asp.net-mvc json null