3 Stimmen

was bedeutet "this" innerhalb einer Ajax-Funktion

Ich habe versucht, diese innerhalb einer Ajax-Funktion verwenden, um das Ereignis Ziel verweisen. aber es scheint, dass ist nicht der Weg, den ich denke.

zum Beispiel:

$('#test').live('click',function(){
     $.ajax({
         type:'post',
         url:
         data:...,
         success:function(mes){
             $(this).append('mes');
         }
     });
});

so hier $(this) bezieht sich nicht auf die ('#test') Selektor. was bedeutet es beziehen? Danke für jede Erklärung.

4voto

Darin Dimitrov Punkte 990883

Innerhalb des Erfolgsrückrufs this verweist auf ein von jQuery erstelltes globales Objekt, das Informationen über die AJAX-Anfrage enthält. Wenn Sie das ursprüngliche DOM-Element erhalten möchten, können Sie es in einer Closure erfassen:

$('#test').live('click',function() {
    var $this = $(this);
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        success: function(mes) {
            $this.append('mes');
        }
    });
});

oder wenn Sie keine Closures mögen, können Sie es als Schlüssel/Wert-Paar der Anfrage übergeben:

$('#test').live('click',function() {
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        myElement: $(this),
        success: function(mes) {
            this.myElement.append('mes');
        }
    });
});

Dies könnte in Szenarien nützlich sein, in denen die success Callback ist keine anonyme Funktion.

3voto

Frédéric Hamidi Punkte 249635

Standardmäßig, this wird das erweiterte Einstellungsobjekt sein, das beim AJAX-Aufruf verwendet wird. Vom Dokumentation :

Standardmäßig ist der Kontext ein Objekt, das die Ajax-Einstellungen darstellt die beim Aufruf verwendet werden ( $.ajaxSettings mit den Einstellungen zusammengeführt, die an $.ajax ).

Sie können die context Einstellung zur Angabe des Objekts this in Rückrufen referenziert werden:

$("#test").live("click", function() {
    $.ajax({
        type: "post",
        context: this,
        success: function(mes) {
            // Here, this will refer to #test.
            $(this).append('mes');
        }
    });
});

1voto

Sergey Metlov Punkte 24686

Das ist der Kontext. Von JQuery-Website :
Die this Referenz in allen Callbacks ist das Objekt in der Kontextoption, die an $.ajax in den Einstellungen übergeben wurde; wenn Kontext nicht angegeben ist, ist dies eine Referenz auf die Ajax-Einstellungen selbst.

1voto

AlienWebguy Punkte 75424

In diesem Beispiel, $(this) würde die $.ajax() Objekt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X