0

データベースとデータを交換するために(jquery経由で)ajaxを使用しています。.ajaxcomplete 関数は常にセレクターを持つ jquery オブジェクトに基づいているため、この明示的な ajax リクエストが成功したかどうかを確認する他の方法はありますか? .ajax は、div などの特定の dom オブジェクトには属していません。純粋な Javascript ファイルで Ajax を使用したいと考えています。現時点では、特定の html ページに関連付けられていません。$(document).ajaxComplete() は機能しますが、私が望むものではありません

this.replot=function(){ 
    $(this).ajaxComplete(function() {alert('hallo');});   //here is my prob
    var that=this;
    var anfrage='anfrage= SELECT '+ this.xvaluecol+', '+this.y1valuecol+ ' FROM '+ this.tablename+ ' WHERE '+this.xvaluecol+' <=\'2010-11-06 15:00:00\' AND '+this.xvaluecol+' >=\'2010-11-06 07:00:00\'';
    $.ajax({
        url : 'getdata.php',
        dataType : 'json',
        data: anfrage,
        type : 'post',
        success : function(json) {
            if(String(json[0][0]).search('error')==-1)
            {
                that.data1=json;
                that.xaxismin=json[0][0];
                that.xaxismax=json[json.length-1][0];
                that.yaxsismin=parseInt(that.find_min(json));
                that.yaxismax=parseInt(that.find_max(json));
                console.log(json);
                console.log("yaxismin="+that.yaxismin);
                console.log("yaxismax="+that.yaxismax);
                //c=new Date((that.xaxismin));
                //c.setMinutes(c.getMinutes()+1441+60);
                //(c.toLocaleString());
                that.update();
                $.jqplot(that.divid,[that.data1,that.data2],that.options).replot();
            }
            else
            {
                alert('Plot nicht moeglich Fehlercode: '+json[0][1]);
            }
        }
    })
}
4

3 に答える 3

1

私はajaxStopoverを使いがちですajaxComplete。すべての違いについてはわかりませんが、似ていると思います。

バインドする要素ajaxCompleteは重要ではありません。次の 2 つのコード スニペットは、まったく同じことを行います。

$("#some_element").ajaxComplete(function () {
    alert($(this).html());
});

$(document).ajaxComplete(function () {
    alert($("#some_element").html());
});

だから私はあなたの問題を使用することで解決できると思います$(document)

于 2012-08-17T09:56:04.607 に答える
0

jQuery で ajax リクエストのグローバル イベント ハンドラーを設定できます。動的プロパティ (「id」など) を追加して、特定のリクエストを識別することができます。

$.ajaxSetup({
    success: function(data, textStatus, jqXHR) {
        console.log(jqXHR.id + " success");
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(jqXHR.id + " failed");
    },
    complete: function(jqXHR, textStatus, errorThrown) {
        console.log(jqXHR.id + " completed");
    }
});

$.ajax({
    url: "/"
}).id = "request1";

$.ajax({
    url: "/"
}).id = "request2";

$.ajax({
    url: "sdddqwdqwdqwd.com"
}).id = "request3";

デモ: http://jsfiddle.net/diode/3fX8b/

于 2012-08-17T10:17:12.813 に答える
0

ajax 呼び出しを定義するときに、"Complete" コールバックを指定できます。このコールバックは、すべての ajax 呼び出しの後、および成功/エラー コールバックの後に呼び出されます。

$.ajax({
    complete: function(){ alert('hello'); }
});

$.ajax は、jQuery 1.5 の時点で promise オブジェクトも返します。新しいバージョンの jQuery を使用している場合は、次のようにすることもできます。

var jqXhr = $.ajax({ ... your code }).always(function(){ alert('hello'); });
//Or
jqXhr.always(function(){ alert('hello'); });
于 2012-08-17T09:52:29.893 に答える