我有一个ASP.Net MVC项目,我试图在我的PunchesController中调用一个名为jobs的方法。我在方法上设置了一个调试器,它命中了jobs方法并返回正确的结果。我甚至从Advanced Rest Client调用了jobs方法,它返回了正确的结果。
但是在jquery方法中我得到“Uncaught TypeError:f.QueryResponseHeaders不是一个函数”,我通过Google /堆栈溢出找不到多少。
json从PunchesController中的Jobs方法返回
[
{
"Job":{
"Id":"5932c49d-5f1b-443c-b43c-6107c832b07b",
"Name":"Featured Actor"
},
"Status":0,
"StartDate":"2015-08-12T00:00:00",
"EndDate":"0001-01-01T00:00:00",
"PayRate":20000000.0,
"Companies":[
{
"Id":"cb0e96a4-eaf2-4966-810f-7949581ba3fe",
"Name":"Test Company"
}
],
"Id":"21aebb35-ade3-4cb3-83bb-db47824d1509",
}
]
我尝试在GET调用中添加错误处理程序,但它永远不会命中它。它始终会向控制台打印“Uncaught TypeError:f.QueryResponseHeaders不是函数”,就是这样。有什么想法吗?
答案 0 :(得分:0)
您是否尝试过添加contentType
参数?:
$.ajax({
url: '/punches/jobs/' + employeeId,
dataType: 'json',
type: "GET",
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log(response);
}
});
另外,您可以使用$.getJSON():
$.getJSON(url, params, function (response) {
console.log(response);
});
作为旁注,从 jQuery v1.4 开始,参数的序列化已经改变。如果您需要支持以前的参数序列化,则可能需要将traditional
设置为true
。有关文档here的更多信息
在每次调用时设置属性,如下所示:
$.ajax({
...
traditional: true,
...
});
或者像这样全局设置(这将适用于所有进一步的ajax调用):
$.ajaxSetup({
traditional:true
});
答案 1 :(得分:0)
在预感中,我将我的jquery版本从2.1.4降级到1.11.3,现在一切正常。我不确定导致错误的是什么,但它至少是固定的。