我有一个ajax请求,我故意从服务器端代码中失败来触发错误处理事件。我想知道这里是否有可能得到它尝试的URL?我想获取该URL,并将其插入到超链接中,然后重试请求。
这个是可能的吗?
编辑我能够看到试图通过FireBug发出的URL请求,并通过console.dir()检查jqxhr对象,并且似乎找不到任何东西来帮助我识别它试图调用的URL。理想情况下,不想存储全局变量,而是希望从参数中获得这一点。
提前谢谢你,O。
$.ajax({
type: 'get',
url: 'somewhere/foo',
context: this,
success: this.mySuccess,
error: this.myError,
cache: false
});
myError = function (jqXhr, textStatus) {
alert(jqXhr.url); //Get url of failed request and inject it into hyper link?
};发布于 2013-09-12 11:45:50
将url保存在变量中。您可以在错误函数中使用它。显然,url将与在ajax请求的url参数中提供的url相同。
var url = 'somewhere/foo';
$.ajax({
type: 'get',
url: url,
context: this,
success: this.mySuccess,
error: this.myError,
cache: false,
error: function(jqXHR, exception) {
//use url variable here
}
});另一种选择可以是
$.ajax({
type: 'get',
url: 'https://google.com',
context: this,
success: this.mySuccess,
error: this.myError,
cache: false,
beforeSend: function(jqXHR, settings) {
jqXHR.url = settings.url;
},
error: function(jqXHR, exception) {
alert(jqXHR.url);
}
});小提琴
发布于 2017-09-27 00:02:29
我相信最简单的方法是:
this.urlthis应该绑定到具有url属性的ajax设置对象。
发布于 2021-12-25 14:12:58
加@KhawerZeshan回答。最好在全局设置beforeAjax:
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
jqXHR.url = settings.url;
}
});这样,如果您在异步中使用它,请等待:
try {
await $.get('http://example.com');
} catch(e) {
console.log(e.url);
}https://stackoverflow.com/questions/18763182
复制相似问题