2009-06-22 8 views
1

Pourquoi ce script entraîne-t-il un 'non défini' lorsque la valeur est renvoyée à partir de l'appel Ajax?Renvoyer une valeur avec Ajax.Request

function myShippingApp() { 

this.shipper = 0; 

this.init() { 
    this.getShipRate(); 
    alert(this.shipper); 
} 

this.getShipRate = function() { 

    var zip = $('zip').value; 
    if(zip == '') { 
     return false; 
    } else { 
     var url = 'getrate.php?zip='+zip; 
     this.shipper = new Ajax.Request(url, { 
      onComplete: function(t) { 
       $('rates').update("$"+t.responseText); 
       return t.responseText; 
      } 
     }); 
    } 
} 

}

Je travaille avec le cadre du prototype et de la difficulté à retourner la valeur à l'objet. Qu'est-ce que je fais de mal?

Merci! Ajax.Request ne renvoie aucune valeur, c'est une instanciation d'un objet.

+2

Duplicata de http://stackoverflow.com/questions/1005942/get-ajax-response/1005987 – Surya

+0

Ils sont similaires mais pas identiques. Cette question concerne spécifiquement Ajax.Request, bien que les deux questions se résument à la même question. – defines

Répondre

0

Je suppose que vous pouvez dire que la valeur est l'objet lui-même.

2

La valeur que vous voulez est dans t.responseText, elle n'est pas 'retournée' par l'objet Ajax.Request, donc cette .shipper n'est jamais affectée à sa valeur.

Ceci est probablement plus le long des lignes de ce que vous voulez:

function myShippingApp() { 

    this.shipper = 0; 

    this.init() { 
    this.getShipRate(); 
    } 

    this.getShipRate = function() { 
    var zip = $('zip').value; 
    if(zip == '') { 
     return false; 
    } else { 
     var url = 'getrate.php?zip='+zip; 
     new Ajax.Request(url, { 
     onComplete: function(t) { 
      $('rates').update("$"+t.responseText); 
      this.shipper = t.responseText; 
      alert(this.shipper); 
     } 
     }); 
    } 
    } 
} 

Laissez-moi savoir si cela fonctionne pour vous.

Questions connexes