2010-10-05 17 views
47
var Box = function(){ 
    this.parm = {name:"rajakvk",year:2010}; 
    Box.prototype.jspCall = function() { 
     $.ajax({ 
      type: "post", 
      url: "some url", 
      success: this.exeSuccess, 
      error: this.exeError, 
      complete: this.exeComplete 
     }); 
    } 
    this.exeSuccess = function(){ 
     alert(this.parm.name); 
    } 
} 

Nie otrzymuję obiektu Box w metodzie exeSuccess. Jak przekazać obiekt Box w metodzie exeSuccess?Jak przekazać kontekst w jquery ajax success callback function

Odpowiedz

76

Użyj context option coś takiego:

$.ajax({ 
     context: this, 
     type: "post", 
     url: "some url", 
     success: this.exeSuccess, 
     error: this.exeError, 
     complete: this.exeComplete 
    }); 

Opcja określa kontekst jakim kontekście wywołania zwrotnego jest wywoływana z ... tak to określa co this odnosi się do wewnątrz tej funkcji.

+3

Bardzo przykro. Przeoczona dokumentacja jQuery. Jest to wyraźnie wspomniane tutaj http://api.jquery.com/jQuery.ajax/ – rajakvk

+4

Być może wyraźnie wspomniano, ale nie jest tak jasne, jak go używać. Przykład Nicka jest bardzo pomocny. Ten post idzie jeszcze bardziej szczegółowo: http://stackoverflow.com/questions/5097191/ajax-context-option –