微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax 跨域取json失败

ajax 跨域取 json 常常会遇到失败的情况。因为浏览器的同源策略,不允许从一个域名的网页向另一个域名的资源发起请求,除非该域名在响应头中允许跨域。比如:@H_404_1@

Access-Control-Allow-Origin: *

ajax 跨域取json失败@H_404_1@@H_404_1@

如果跨域请求的资源没有在响应头中设置 Access-Control-Allow-Origin,那么就会抛出错误。@H_404_1@

除此之外,还有其他一些可能导致 ajax 跨域取 json 失败的原因。@H_404_1@

1. JSON 数据格式问题@H_404_1@

$.ajax({
  url: 'http://example.com',dataType: 'jsonp',success: function(data){
    console.log(data);
  }
})

如果 JSON 数据格式不正确,会导致解析失败。比如 JSON 数据中包含注释,会导致解析失败。@H_404_1@

2. 请求超时问题@H_404_1@

$.ajax({
  url: 'http://example.com',timeout: 5000,// 设置请求超时时间,认为 0,即永不超时
  success: function(data){
    console.log(data);
  },error: function(xhr,statusText,e){
    console.log(e);
  }
})

如果服务器响应时间过长,会导致请求超时。@H_404_1@

3. 跨域请求不支持 cookie@H_404_1@

跨域请求不支持 cookie,所以如果需要在跨域请求中携带 cookie,需要在请求中设置 withCredentials: true。@H_404_1@

$.ajax({
  url: 'http://example.com',xhrFields: {
    withCredentials: true // 是否携带 cookie
  },success: function(data){
    console.log(data);
  },e){
    console.log(e);
  }
})

如果服务器不支持跨域请求携带 cookie,设置 withCredentials: true 也会导致跨域请求失败。@H_404_1@

以上就是 ajax 跨域取 json 失败的几个常见原因。解决方法也相应不同,具体需要根据具体情况来处理。@H_404_1@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐