Syntaxe jQuery

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Syntaxe jQuery

Re: Syntaxe jQuery

par naholyr » 23 oct. 2009, 10:27

Avant ça ne marchait pas car tu utilisais une fonction anonyme au milieu dans "success: ...". Donc pour que ça marche il aurait fallu que $.ajax retourne la valeur de retour de l'exécution de ladite fonction.
[javascript]$.ajax = function(options) {
........
if (!options.async && everythingWasOK) {
return options.success(response);
}
.....
}[/javascript]
Mais ce n'est pas le cas :)

Donc tu dois déclarer une variable "au-dessus" du scope de ta fonction anonyme (c'est l'objectif de "var result" avant l'appel à $.ajax), modifier cette variable (qui du point de vue de ta fonction anonyme se comporte comme une variable globale) afin qu'elle porte la valeur que tu souhaites transmettre.
C'est la magie de la transmission des scopes parent et des fonctions anonymes en Javascript :)

Re: Syntaxe jQuery

par fab » 22 oct. 2009, 22:09

Et bien merci naho c'est parfait :) par contre tu peux m'expliquer pourquoi en mettant var result ça a marché mais sans ça marchait pas ?

Re: Syntaxe jQuery

par naholyr » 22 oct. 2009, 22:02

Joue sur la portée des variables :
[javascript]
function ...
{
var result;
$.ajax({
...
result = (msg == 'true');
...
});

return result;
}[/javascript]

Syntaxe jQuery

par fab » 22 oct. 2009, 20:53

j'ai une fonction checkUsername qui fait un appel en Ajax et j'aimerais que cette fonction retourne true ou false pour l'utiliser ailleurs dans mon code js

Code : Tout sélectionner

function checkUsername(s) { $.ajax({ type: "POST", url: 'http://'+ CURRENT_DOMAIN + '/ajax/checkUsernameExists/username/'+s, async: false, success: function(msg){ if(msg=='true'){ return true; } else { return false; } } }); }
Bon seul problème c'est que le return agit pas sur la fonction "mère" si je déclare une variable elle sort pas non plus de la fonction fille, étant assez limité en javascript ... Quelqu'un a une idée?