Jquery Ajax调用给出了无法捕获的错误

时间:2014-01-07 10:33:42

标签: javascript jquery ajax xmlhttprequest

我遇到了一个ajax调用,它给出了一个错误,我无法在ajax调用中找到错误函数。这个错误阻止我继续执行程序

首先是这里的代码。

    var submit = function(){
        var url = ""
        var data = ["9b4e749d5cb6e069dd49cab93a69","aufujishngidrg"]
        for(var int = 0; int < data.length; int++) {
            console.log(data[int])
            url = *insert url*
            $.ajax({
                type:'GET',
                url:encodeURI(url),
                dataType: "json",
                contentType:"application/json; charset=utf-8",
                error:function (xmlHttpRequest,textStatus, xhr, ajaxOptions, thrownError) {
                    if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0){
                        console.log("xmlhttpRequest error")
                        return;
                    }
                    else{
                        console.log("error")
                    }
                },
                success:function(data){
                    console.log(data)
                },
            });
        }
        console.log("derp")
    }

基本上我想要做的是迭代一系列哈希。这些哈希值通过http请求发送到服务器。然后,服务器应返回属于散列的Id。

当您发送有效哈希时,此方法有效。它只会返回属于哈希的Id,没有问题。 Id将记录到控制台。

当您发送invlaid哈希时,服务器将以状态500错误响应。错误函数中捕获此错误。但它也会返回

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

我似乎无法捕捉到这个错误。我甚至都不知道为什么会这样。 我知道跨域策略,正在处理服务器端。我假设它有效,否则有效请求应该返回相同的错误吗?

有没有人知道解决这个问题的方法? 我究竟做错了什么? 我如何捕获此错误? 提前谢谢!

我注意到的另一件事是脚本将完全运行,因此在ajax调用之外还会将“derp”记录到控制台。然后,它记录ajax调用输出和错误。如果不是:首先,所有ajax输出然后在调用后继续执行代码?

2 个答案:

答案 0 :(得分:0)

试试这个: -

var submit = function(){
        var url = ""
        var data = ["9b4e749d5cb6e069dd49cab93a69","aufujishngidrg"]
        for(var int = 0; int < data.length; int++) {
            console.log(data[int])
            url = *insert url*
            $.ajax({
                type:'GET',
                url:encodeURI(url),
                crossDomain: true,
                dataType: 'jsonp',
                contentType:"application/json; charset=utf-8",
                error:function (xmlHttpRequest,textStatus, xhr, ajaxOptions, thrownError) {
                    if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0){
                        console.log("xmlhttpRequest error")
                        return;
                    }
                    else{
                        console.log("error")
                    }
                },
                success:function(data){
                    console.log(data)
                },
            });
        }
        console.log("derp")
    }

答案 1 :(得分:0)

这是我的工作代码: -

<!doctype>
<html>
<head>
  <title>Script</title>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script>
   // var submit = function(){
        var url = ""
        var data = ["9b4e749d5cb6e069dd49cab93a69","aufujishngidrg"]
        for(var int = 0; int < data.length; int++) {
            console.log(data[int])
            url = "contact.php";
            $.ajax({
                type:'GET',
                url:encodeURI(url),
                crossDomain: true,
                dataType: 'jsonp',
                contentType:"application/json; charset=utf-8",
                error:function (xmlHttpRequest,textStatus, xhr, ajaxOptions, thrownError) {
                    if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0){
                        console.log("xmlhttpRequest error")
                        return;
                    }
                    else{
                        console.log("error")
                    }
                },
                success:function(data){
                    console.log(data)
                },
            });
        }
        console.log("derp")
   // }
  </script>
</head>
<body>
</body>