从JS错误控制器中的ASP Net MVC调用函数

时间:2015-08-12 07:23:40

标签: javascript c# jquery asp.net asp.net-mvc

我有一个ASP.Net MVC项目,我试图在我的PunchesController中调用一个名为jobs的方法。我在方法上设置了一个调试器,它命中了jobs方法并返回正确的结果。我甚至从Advanced Rest Client调用了jobs方法,它返回了正确的结果。

但是在jquery方法中我得到“Uncaught TypeError:f.QueryResponseHeaders不是一个函数”,我通过Google /堆栈溢出找不到多少。

我在下面列出了相关代码: jobs method in PunchesController

Info from Advanced rest client

Updated JS

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不是函数”,就是这样。有什么想法吗?

2 个答案:

答案 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,现在一切正常。我不确定导致错误的是什么,但它至少是固定的。