我昨天花了很多时间在SO上寻找适合我的东西我还没找到合适的东西。 我从一个剃刀视图的ajax调用的响应有一个相当普遍的问题。 出于测试目的,我强迫成功响应作为Json响应返回:
控制器
public ActionResult Save(int order){
. . .
var response = new {Order = order, ResultCode = 0, ResultMessage = "Positive!", Success = true };
var json = Json(response, JsonRequestBehavior.AllowGet);
return json;
Ajax调用如下:
$(document).ready(function () {
$("#save_ahref").click(
function () {
$.ajax({
method: "GET",
url: "/MyController/Save",
dataType: "application/json",
data: { order: $("#hid_order").val() },
success: onSuccess,
error: onError
});
}
);
});
function onSuccess(response) {
//never reached
}
function onError(response) {
var res = JSON.parse(response.responseText);
//do other stuff
}
我对Chrome控制台的回复看起来是正确的:
Object {readyState: 4, responseText: "{"Order":12345678,"Success":true,"ResultCode":0,"ResultMessage":"Positive!"}", status: 200, statusText: "OK"}
以及JSON.parse(response.responseText)的结果(jsonlint也这样说)。
虽然我按照SO和其他论坛中提到的提示(他们基本上都说使用application / json而不是json作为dataType,并尝试正确解析对象)我仍然得到错误事件被触发,我可以'似乎得到了原因。
我很感激任何想法!