Effectivement cela fonctionne beaucoup mieu =)
Version imprimable
Effectivement cela fonctionne beaucoup mieu =)
Euh en faite non sa marche toujours pas :/
as tu regardé la console firebug ? que reçois tu en reponse ?
Avec lej'ai bien la bonne réponse false ou true.Code:alert (term);
te retourne bienCode:alert (term.length);
4 pour true et 5 pour false
si ce n'est pas le cas c'est que ta reponse contient du BOM
Il me renvoie undefinied pour les 2 valeurs. Mon code est écrit en UTF-8 sans BOM. Je vais donc voir si il y a quelque chose pour enlever le BOM de ma réponse
Citation:
alert (term);
j'ai bien la bonne réponse false ou true.
????Citation:
Il me renvoie undefinied pour les 2 valeurs.
8O
pas possible si il te renvoie "true" sous forme de string => length
ou alors tu as evalué la reponse et c'est un boolean ?
Pardon c'était une erreur de frappe de ma part. Il me renvoie bien 4 ou 5
teste maintenant
Code:
1
2
3 alert(term=='true'); alert(term=='false');
J'ai écrit le code suivant :
Le problème c'est qu'il m'affiche la valeur de term et non pas Erreur. De plus, il faudrait que j'affecte la valeur de term dans une varaible de mon js pour pouvoir l'ajouter dans une condition en dehors de mon appel ajax. Est-ce possible ? Il me semble que oui. J'ai essayé de faire un callback pour récupérer la valeur mais je n'y suis pas arrivé.Code:
1
2
3
4
5 if(alert(term)=='false') { alert('Erreur'); }
heu ?????
if sur un alert :koi:Code:if(alert(term)=='false')
Oula je crois que j'ai pas les yeux en face des trous ^^
Sa va beaucoup mieu d'un seul coup :DCode:if(term=='false')
Du coup comment je pourrais faire pour renvoyer la valeur de term dans un variable hors de mon ajax ?
avec une variable globale ou avec
dans le succes :
Code:window['newvar']=term
Ah yes sa marche niquel MERCI !!!
Bon ya quelques ratés quand même mais je vais essayer de trouver pourquoi
En faite non sa ne marche toujours pas. J'ai bienqui vaut true ou false mais quand je l'ajoute dans ma condition elle n'est pas prise en compte. Sur certains de mes appelles en ajax sur le même fichier avec donc la même structure d'appel, il ne se passe rien et window['trouve'] ne vaut rienCode:window(['trouve']=term;
pense au moment ou est executé ton script dans lequel tu testes en dehors de l'ajax par rapport au moment du success de l'ajax ...
Ajax est asynchrone. Il faut donc que j'attende la réponse de ma fonction avant de faire mon test. Je dois donc passer pas un callback ou quelque chose dans le genre ?
succes = callback :roll:
Ah ok :roll:je fais mon test après mon appel à ajax donc là je ne vois pas
montre ton code ...
Le voilà :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "validDept.php?id=depart", data: {"term":document.getElementById('depart').value}, success: function(term){ window['trouve']=term; alert(window['trouve']); }}); if(strim=="" || window['trouve']=="false") { alert("Veuillez saisir un nom de DEPARTEMENT valide"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; }
heu ...
le reste n'est pas dans le callback ... donc faut pas s'etonner !Code:
1
2
3
4 success: function(term){ window['trouve']=term; alert(window['trouve']); }});
Mais je ne peux pas passer tout le reste de mon code dans le callback ??
ben si ...
ou alors appelle une fonction ...
J'ai essayé en déplaçant mon code dans le callback mais sa ne marche pas. Je vais essayer de passer par une fonction
Je n'arrive pas à passer une fonction à l'intérieur de mon success. J'ai essayé cela mais sans résultat :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 function Valid() { if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "validDept.php?id=depart", data: {"term":document.getElementById('depart').value}, success: function(term){ window['trouve']=term; ValidTotal(term,strim); }}); } function ValidTotal(term, strim) { if(strim=="" || window['trouve']=="false") { alert("Veuillez saisir un nom de DEPARTEMENT valide"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; } }
tu n'as plus besoin de variable globale ..
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 function Valid() { if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "validDept.php?id=depart", data: {"term":document.getElementById('depart').value}, success: function(term){ ValidTotal(term,strim); } }); } function ValidTotal(a, b) { if(b=="" || a =="false") { alert("Veuillez saisir un nom de DEPARTEMENT valide"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; } }
J'ai essayé ton code mais cela ne marche pas. Aucune de mes conditions n'est testé :?
as tu testé les valeurs de a et b dans la fonction ?
J'ai testé dans ValidTotal(a,b):mais rien ne s'affiche.Code:alert(a);alert(b);
New POST: Rien ne s'affiche sous Firefox mais les valeurs s'affiche bien sous IE
commence par mettre de l'ordre dans ton code ...
tu utilises jquery ...
pareil pour tesCode:data: {"term":$('#depart').val()},
etcCode:var str = document.formdept.depart.value;
Il faut que je remplace tous les .value par .val() ?
et pour etre coherant tous les documents. par $(...)
Pour mon formulaire formdept, est-ce que ça s'écrit bien comme cela ?
Code:
1
2
3 if($('#formdept') { var str = $('#formdept.depart').val();
il n'a pas d'id ton input ?
montre le html de l'input ...
Il n'en avait pas. J'ai donc mis formdept comme id de mon formulaire.
depart est l'id de mon input dans mon formulaire formdept
Bonjour,
Vous n'êtes pas obligé de passer par le formulaire si votre input a un id :
Code:$('#depart')
D'accord. Mon code ne passe toujours pas dans ma fonction ValidTotal(a,b)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 if($('#formdept')) { var str = $('#depart').val(); var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "Config/PHP/Validator.php?id=depart", data: {"term":$('#depart').val()}, success: function(term){ ValidTotal(term, strim); } }); } function ValidTotal(a, b) { alert(a);alert(b); if(b=="" || a=="false") { alert("Veuillez saisir un nom de DEPARTEMENT valide"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; }
La fonction de rappel liée à success est appelée automatiquement par jQuery et ce n'est pas toi qui définit les paramètres qui lui sont passés.Code:success: function(term, strim){...}
Donc dans ton code, tu réaffectes la variable strim avec une valeur qui n'est pas celle que tu crois.
fonctionnera mieux !Code:
1
2
3 success: function(term){ ValidTotal(term); }