我遇到了一个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输出然后在调用后继续执行代码?
答案 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>