错误jqxhr上的Ajax GET url

时间:2013-09-12 11:36:23

标签: jquery ajax get jqxhr

我有一个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?
};

3 个答案:

答案 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);
    }
});