我使用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 只是说它是。