2013-03-28 2 views
0

La fonction rk() renvoie une clé aléatoire à partir d'un appel Ajax, le paramètre l représente la longueur. Ma question est comment puis-je prendre la valeur de retour du résultat Ajax dans ma variable "k"?jQuery La valeur de retour Ajax ne fonctionne pas

var k = rk(6); 

function rk(l) { //l stands for length 
    $.ajax({ 
     url : 'ajax_lib.php', 
     type : 'POST', 
     data : 'k=1&l=' + l, 
     success : function(r) { 
      return r; 
     }      
    });    
} 

Répondre

2

Ajax utilise le traitement asynchrone, signifie une fois que la demande est envoyée au serveur, il continuera à exécuter les instructions restantes sans attendre la réponse.

Donc, dans votre cas une fois que la demande est envoyée au serveur, rk retours undefined (car il n'y a pas de déclaration de retour) valeur la k variables auront une valeur undefined.

Pour résoudre ce faire de l'usage problématique de l'objet promise retourné par .ajax $

rk(6).done(function(r){ 
    //do what ever you want to do with r 
}); 

function rk(l) { //l stands for lenght   

    return $.ajax({     
     url : 'ajax_lib.php',     
     type : 'POST',     
     data : 'k=1&l=' + l     
    }); 

} 
+0

+1 pour avoir le point –

0

Une solution pourrait être

function rk(myVariable, l) { //l stands for lenght   

    $.ajax({     
     url : 'ajax_lib.php',     
     type : 'POST',     
     data : 'k=1&l=' + l,    
     success : function(r) {    
      myVariable = r; 
     }         
    }); 

} 

et au lieu d'appeler r=rk(l) vous pouvez appeler rk(r, l)

+0

Merci les gars! Arun P Johny, votre exemple fonctionne pour moi –