我有一个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?
};
答案 0 :(得分:26)
将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);
}
});
<强> FIDDLE 强>
答案 1 :(得分:7)
我认为最简单的方法是:
this.url
答案 2 :(得分:0)
最简单的方法是仅通过错误回调上下文的ajax设置(JQueryAjaxSettings)对象访问url。
$.ajax({
type: 'get',
url: 'somewhere/foo',
error: function() {
alert(this.url);
}
});