【问题标题】:JQuery AJAX method calls "error" function instead of "success" function on JSONP requestJQuery AJAX 方法在 JSONP 请求上调用“错误”函数而不是“成功”函数
【发布时间】:2015-09-11 12:45:07
【问题描述】:

我无法通过 jQuery AJAX 调用访问基于 .net 框架 4.0 的 asp.net Web API。

WebAPI 返回以下 JSON 结果

["Value1", "Value2"]

WebClient 实现以下 jQuery 代码来访问 WebAPI

$.ajax({
       type: 'GET',
       url: 'http://localhost:62915/api/values',
       contentType: 'application/json',
       dataType: "jsonp",
       success: function (data) {           
          alert('success');               
          console.log(data);
       },
       error: function (reason) {
           alert('fail');
           console.log(reason);
       }
});

我在 chrome 网络选项卡上没有收到任何错误消息,我可以在上面看到预期的 JSON 结果。

但是,问题在于调用“错误”方法而不是调用“成功”方法。 我的 jQuery 代码有什么问题?

提前致谢。
--SJ

【问题讨论】:

  • 什么是errorCode?你检查浏览器地址栏上的urllocalhost:62915/api/values了吗?
  • 浏览器返回预期的 JSON 结果,但我无法从 JQuery 调用访问该值
  • 为什么是 jsonp?是跨域吗?你应该在 url 中指定回调
  • 是的,它是一个跨域函数调用。在记录结果对象时,我得到这样的结果 Object {readyState: 4, status: 200, statusText: "success"}
  • 上述 jQuery 方法正确获取 JSON 结果,但不是调用 success 方法,而是回退到 error 方法。

标签: jquery asp.net .net asp.net-web-api


【解决方案1】:

一个问题可能是您的 API 还不支持 JSONP。您可以通过一些步骤使其工作。

  • 从 nuget WebApiContrib.Formatting.Jsonp 安装包
  • 在您的 HttpConfiguration 实例上调用扩展方法 AddJsonpFormatter

那么它应该可以工作了。

关于 jsonp 的更多细节:

https://en.wikipedia.org/wiki/JSONP

https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 2011-11-15
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多