Bonjour,
Mon projet est de créer un site, où via un formulaire, on rajoute des adresses dans une base de donnée, qui sont ensuite afficher sur une autre page avec une googlemap. Bref, je sais pas si c'est très clair...
Mon problème est le suivant. J'aimerais tester sur mon formulaire, si tout les champs sont remplis, et ensuite si l'adresse existe, en utilisant geocoder.
Mon problème est que geo.getLocations(search, function (result)... semble être appelé après les différentes boucles if. Donc lorsque je test l'état de la variable statut, c'est l'ancienne valeur qui est utilisé, de même pour la variable error qui me permet d'enregister le message d'erreur.
Donc quand j'envoie mon formulaire, je recois un premier message d'alerte sur l'adresse qui était écrite avant sur mon formulaire, et un message d'alerte qui est correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40 <script language="JavaScript"> var statut; var error; function GetAdress(){ // ====== Array for decoding the failure codes ====== var reasons=[]; reasons[G_GEO_SUCCESS] = "Success"; reasons[G_GEO_MISSING_ADDRESS] = "Missing Address: The address was either missing or had no value."; reasons[G_GEO_UNKNOWN_ADDRESS] = "Unknown Address: No corresponding geographic location could be found for the specified address."; reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address: The geocode for the given address cannot be returned due to legal or contractual reasons."; reasons[G_GEO_BAD_KEY] = "Bad Key: The API key is either invalid or does not match the domain for which it was given"; reasons[G_GEO_TOO_MANY_QUERIES] = "Too Many Queries: The daily geocoding quota for this site has been exceeded."; reasons[G_GEO_SERVER_ERROR] = "Server error: The geocoding request could not be successfully processed."; var geo = new GClientGeocoder(); var search = document.mail_form.champ1.value +','+ document.mail_form.champ2.value+','+ document.mail_form.champ3.value; // ====== Perform the Geocoding ====== geo.getLocations(search, function (result) { // If that was successful if (result.Status.code == G_GEO_SUCCESS) { //alert('Could find'); statut=true; } else{ var reason="Code "+result.Status.code; if (reasons[result.Status.code]) { reason = reasons[result.Status.code] } alert('Could not find "'+search+ '" ' + reason); //message afficher en 2nd error='Could not find "'+search+ '" ' + reason; statut=false; } } ); if(!verifSelection()) return false; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34 function verifSelection(){ if (document.mail_form.champ1.value == "") { alert("Bad Street") return false } if (document.mail_form.champ2.value == "") { alert("Bad City") return false } if (document.mail_form.champ3.value == "") { alert("Bad Country") return false } if(statut==false){ alert('2 '+error); //message afficher en 1er return false; } if (document.mail_form.champ4.value == "") { alert("No title") return false } //} } // Fin de la fonction </script> </head> <body> <form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onsubmit="return GetAdress()">
Partager