在jQuery中发送一个AJAX请求,获得有效的请求,但AJAX抛出错误

时间:2018-02-09 20:22:55

标签: jquery ajax

我在jQuery中有以下AJAX请求:

 $.ajax({
    url: "http://someurl.stuff.com",
    beforeSend: function(xhr) { 
      xhr.setRequestHeader("Accept", "application/json"); 
      xhr.setRequestHeader("Host",null);
      xhr.setRequestHeader("Access-Control-Request-Method",null)
      xhr.setRequestHeader("Origin",null)
      xhr.setRequestHeader("Access-Control-Request-Headers",null)
      xhr.setRequestHeader("DNT",null)
      xhr.setRequestHeader("Accept-Encoding",null)


    },
    type: 'GET',
    dataType: 'text json',
    success: function (data) {
        console.log("Success")
      alert(data);
    },
    error: function(data){
    debugger;
    console.log("failure")
     alert(data)
    }
});

我已经确认我收到了有效的JSON。但是,出于某种原因,我仍然遇到上面的“错误”。任何人都可以帮助我绕过这个或如何在结果中访问JSON? JSON看起来像这样:

{
  "ins": "first Value", 
  "nx": "second value"
}

编辑,所以我注意到在控制台中我收到以下消息:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我觉得奇怪的是,我在Chrome“网络”标签中看到了回复,我无法让它显示在浏览器中。

3 个答案:

答案 0 :(得分:0)

如果正在触发该错误回调函数,那只是因为您的服务器/后端/网址(http://someurl.stuff.com)没有响应该请求的200 / 2XX状态代码。

检查此项以获取有关HTTP状态代码的更多信息:

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors

答案 1 :(得分:0)

好的,所以我弄清楚发生了什么。由于响应不包含Access-Control-Allow-Origin标头,因此Chrome的内置安全性会阻止JSON到达实际脚本,尽管它确实会到达服务器。适用于较旧的IE浏览器。

答案 2 :(得分:0)

我不确定你要对标题做什么,但我建议你对CORS做一些阅读。 This是一个非常好的资源。如果您想限制谁可以访问您的终端,您可以设置Access-Control-Allow-Origin: http://someurl.stuff.com

    $.ajax({
     url: "http://someurl.stuff.com",
     type: 'GET', 
     dataType: "json",
     success: function (data) {
       console.log("Success")
       console.log(data);
     },
     error: function(xhr){
      console.log("failure")
      console.log("An error occured: " + xhr.status + " " + xhr.statusText)
     }
    })