jQuery ajax和getJSON请求命中访问控制允许源问题

jQuery ajax和getJSON请求命中访问控制允许源问题,jquery,ajax,jsonp,Jquery,Ajax,Jsonp,我试图使用jquery的$.ajax或$.getJSON从不同的服务器获取文件,但我碰到了访问控制允许源代码墙,而jsonp选项似乎对我不起作用 该站点正在使用jQuery 1.5.1 以下是我的三个测试: 使用basic$.ajax,请求的url从未附加?回调=?: $.ajax({ url: url, datatype: 'jsonp', error: function(){console.log('error');}, success: function()

我试图使用jquery的
$.ajax
$.getJSON
从不同的服务器获取文件,但我碰到了
访问控制允许源代码
墙,而jsonp选项似乎对我不起作用

该站点正在使用jQuery 1.5.1

以下是我的三个测试:

使用basic$.ajax,请求的url从未附加
?回调=?

$.ajax({
    url: url,
    datatype: 'jsonp',
    error: function(){console.log('error');},
    success: function(){console.log('success');}
});
使用basic$.ajax进行黑客攻击,仍然会遇到跨站点问题:

$.ajax({
    url: url + '.jsonp?callback=?',
    datatype: 'jsonp',
    error: function(){console.log('error');},
    success: function(){console.log('success');}
});
使用$.getJSON可以解决跨站点问题,但不会触发错误案例:

$.getJSON(url + '?callback=?',
    function(data){
        console.log('success');
    })
    .error(function(){
        console.log('error');
    })
    .success(function(){
        console.log('success!');
    });
有人知道我做错了什么吗?最后,我尝试测试url是否存在,如果不存在,则执行错误处理


编辑:我试图访问的url不存在。我希望会触发错误案例

以便能够从javascript访问外部资源。远程资源必须在响应标头中包含
访问控制允许来源
。如果您可以控制该资源,则需要将此响应头添加到
*
(如果您想要更严格的访问控制,则添加到您的域)

请在此处阅读更多信息:

如果您不控制该外部资源。解决方案更加棘手。有些人使用YUI进行跨域ajax调用。请参见此处:


如果您正在编写chrome扩展,API允许您向扩展授予从js访问其他域资源的权限。

,以便能够从javascript访问外部资源。远程资源必须在响应标头中包含
访问控制允许来源
。如果您可以控制该资源,则需要将此响应头添加到
*
(如果您想要更严格的访问控制,则添加到您的域)

请在此处阅读更多信息:

如果您不控制该外部资源。解决方案更加棘手。有些人使用YUI进行跨域ajax调用。请参见此处:


如果您正在编写chrome扩展,API允许您向扩展授予从js访问其他域资源的权限。

您必须指定超时时间:

$.ajax({
    dataType: "jsonp",
    url : url,
    timeout : 1000
})
    .done(function(data) {logdata(data); })
    .fail(function() { logdata("error"); });

您必须指定一个超时时间

$.ajax({
    dataType: "jsonp",
    url : url,
    timeout : 1000
})
    .done(function(data) {logdata(data); })
    .fail(function() { logdata("error"); });
你可以用。此脚本允许您捕获错误(尽管没有任何有意义的错误消息)

主要浏览器支持:

  • Internet Explorer 6+
  • 火狐2+
  • 铬1+
  • 狩猎3+
  • 歌剧9+
    • 您可以使用。此脚本允许您捕获错误(尽管没有任何有意义的错误消息)

      主要浏览器支持:

      • Internet Explorer 6+
      • 火狐2+
      • 铬1+
      • 狩猎3+
      • 歌剧9+

      您使用了数据类型,但您应该使用数据类型。

      您使用了数据类型,但您应该使用数据类型。

      我正在等待后端开发人员联机,但是如果文件存在,此端点可以工作(通常,尽管我目前存在问题),所以我假设这是正确的?他回来后我会查一查。另外,第三个案例没有涉及访问控制允许来源问题。关于为什么没有触发错误函数有什么想法吗?我正在等待后端开发人员联机,但是如果文件存在,这个端点就可以工作(通常,尽管我目前有问题),所以我假设它已经存在了?他回来后我会查一查。另外,第三个案例没有涉及访问控制允许来源问题。有没有想过为什么没有触发错误函数?尝试这样做只是为了检查,但问题不是超时,而是
      access control allow origin
      尝试这样做只是为了检查,但问题不是超时,而是
      access control allow origin
      不真实
      datatype
      datatype
      在AJAX中给出了完全相同的结果
      datatype
      datatype
      在AJAX中给出了完全相同的结果