【问题标题】:ASP Net MVC calling function in controller from JS errors来自 JS 错误的控制器中的 ASP Net MVC 调用函数
【发布时间】:2015-08-12 07:23:39
【问题描述】:

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

但在 jquery 方法中,我得到“未捕获的 TypeError:f.QueryResponseHeaders 不是一个函数”,我无法通过 Google/堆栈溢出找到更多信息。

我在下面包含了相关代码:

PunchesController 中 Jobs 方法返回的 json

[
{
  "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 调用添加错误处理程序,但它永远不会成功。它总是将“未捕获的 TypeError:f.QueryResponseHeaders 不是函数”打印到控制台,仅此而已。有什么想法吗?

【问题讨论】:

  • 显示 loadjobs 的代码,看起来应该像 loadjobs() ,甚至应该接受至少一个参数,如 loadjobs(data)
  • 您是否尝试从您的 ajax 调用中删除 contentType 字符串?
  • 您是否尝试过将 url end 更改为 var url = 'localhost:51345/punches/jobs/?id=' + employeeId ?
  • 你使用mvc还是web api?
  • @teovankot 我删除了除了 url、类型和成功回调之外的所有内容,但它没有修复它。

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


【解决方案1】:

凭直觉,我将 jquery 版本从 2.1.4 降级到 1.11.3,现在一切正常。我不确定是什么导致了错误,但至少已经修复。

【讨论】:

    【解决方案2】:

    您是否尝试过添加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
    });
    

    【讨论】:

    • 我刚才试过了,也没有用。我得到了同样的错误。凭直觉,我将 jquery 版本从 2.1.4 降级到 1.11.3,现在一切正常。
    • @AndrewM 奇怪的是,我在 jQuery v2.1.4 中使用了这两种方法,也许你以前的 jquery js 文件已损坏?你试过重新下载吗?
    • 我没有尝试再次下载 2.1.4。稍后我将不得不尝试并报告。
    • @AndrewM,太好了,让我们知道会发生什么...我还在答案中添加了更多可能有用的信息...祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多