2010-11-09 3 views
1
function Request(params) 
{ 
    // Stuff stuff stuff 

    // And then 

    $.ajax(
    { 
     type: 'GET', 
     url: 'someurl', 
     success: this.done 
    }); 
} 

Request.prototype.done = function() 
{ 
    // "this" in this context will not refer to the Request instance. 
    // How to reach it? 
} 

Répondre

4

Vous pouvez saisir "cette" première: paramètre

function Request(params) 
{ 
    // Stuff stuff stuff 

    // And then 

    var $this = this; 

    $.ajax(
    { 
     type: 'GET', 
     url: 'someurl', 
     success: function() { $this.done(); } 
    }); 
} 
+0

Pour ce but spécifique, un paramètre "contexte" peut être ajouté à la requête ajax, en référence à ceci. Mais sinon, votre solution est plus générale, et donc je l'ai définie comme réponse correcte. – quano

0

this ne fait pas référence à la même chose !!!

-1

essayer suivante:

function Request(params) 
{ 
    var that = this; 

....

Request.prototype.done = function() 
{ 
    that... 
+0

"that" est local pour la fonction Request. – quano

+0

en effet, "cela" est indéfini dans done() –

+0

ouais, j'utilise "ce" truc à l'intérieur de la même "fermeture" pour ne pas perdre de référence à cela; essayé aussi ça ne fonctionne pas avec le prototypage. Cela fonctionnerait si fait ne serait pas défini en utilisant le prototype :). – rbhro

3

Apparemment, vous pouvez ajouter le "contexte" à la requête ajax, comme ceci:

$.ajax(
{ 
    type: 'GET', 
    url: 'someurl', 
    success: this.done, 
    context: this 
}); 
Questions connexes