Javascript jqueryajax多调用错误处理
我试图处理错误。这里是我的例子——我有多个来自不同URL的AJAX调用。我想当某个url响应错误500时知道哪个url是。这是我的密码Javascript jqueryajax多调用错误处理,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图处理错误。这里是我的例子——我有多个来自不同URL的AJAX调用。我想当某个url响应错误500时知道哪个url是。这是我的密码 var urls = ["url1.php", "url2.php", "url3.php"]; $.each(urls, function(index, value) { $.ajax({ global: false, type: 'POST', url: value, dataType:
var urls = ["url1.php", "url2.php", "url3.php"];
$.each(urls, function(index, value) {
$.ajax({
global: false,
type: 'POST',
url: value,
dataType: 'html',
data: returnData(),
success: function(result) {
switch(value) {
case "url1.php":
break;
case "url2.php":
break;
case "url3.php":
break;
}
},
error: function (e, request, status, error) {
if (e.status == 500) {
alert("500 error");
}
}
});
});
现在,当其中一个返回错误500时,我无法知道是哪个url。
如果有人给我建议,我将非常感激。提前感谢。更新:,因为我无法删除此答案,因为它是已接受的答案;这不是更好的答案,请使用
value
变量参考的答案
你可以这样说,h,o,u,l,d:
error: function (e, request, status, error) {
if (e.status == 500) {
alert("500 error" + $(this)[0].url);
}
}
您可能需要调试以确保
$(this)[0]。url
部分,我只是在我的代码的某个地方的错误回调中检查在哪里可以找到url,它可能与您的不一样?我不确定。但是您应该能够在$(this)对象中找到url。将在闭包中捕获值
变量。我们也要这样做:
alert("500 error from " + value);
它可能在“请求”中?@biseibutsu好的,但是如何?你知道吗?你可以从浏览器的开发工具中找到请求中的url,你应该可以看到请求本身。@biseibutsu是的,我知道这一点。但我想在错误消息中显示url。使用变量“value”?太多了!很好!很高兴能帮上忙!这真的有效吗
此
不应传递给回调函数。@Barmar,它确实有效;但这可能不是最好的解决方案,您能告诉我为什么不应传递此
?我正在访问它。老实说,使用value
看起来更干净、更好,但我认为它是未定义的。@biseibutsu除非您使用ES6 fat arrow函数,否则闭包中不会捕获此。$.ajax
文档中没有任何内容表明jQuery在调用error
函数时显式使用this
作为上下文。这是比@biseibutsu更好的答案