web-dev-qa-db-ja.com

エラーjqxhrでAjaxGET URL

サーバー側のコードから意図的に失敗してエラー処理イベントをトリガーするajaxリクエストがあります。ここで試行したURLを取得できるかどうか疑問に思いました。そのURLを取得してハイパーリンクに挿入し、リクエストを再試行したいと思います。

これは可能ですか?

[〜#〜] edit [〜#〜]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?
};
15
Dr Schizo

urlを変数に保存します。そして、あなたはそれをエラー関数で使うことができます。明らかに、URLはajaxリクエストの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);
    }
});

[〜#〜]フィドル[〜#〜]

27
Khawer Zeshan

最も簡単な方法は次のとおりだと思います。

this.url

これは、url属性を持つajaxオブジェクトインスタンスにバインドする必要があります。

9
neves

最も簡単なのは、エラーコールバックコンテキストのajax設定( JQueryAjaxSettings )オブジェクトを介してURLにアクセスすることです。

$.ajax({
    type: 'get',   
    url: 'somewhere/foo',    
    error: function() {
        alert(this.url);
    }
});
0