OVH Cloud OVH Cloud

Problème avec XMLHttpRequest et FF

28 réponses
Avatar
Jibé
Bonjour,

je suis en train de devenir un rien fou (et pas foot) en cet fin de
vendredi après midi.
Soit la fonction ci-dessous qui consiste à aller recherche le codepostal
d'une ville lorsque celle-ci est sélectionnée dans une liste d'un
formulaire.

La fonction fonctionne (excusez le jeu de mot)
Mais le champ codepostal de monform n'est pas mis à jour sous FF
Le div test affiche bien le codepostal
Par contre sous IE 6 tout roule.
Je retourne le truc dans tous les sens et je ne comprends pas.

JiBé

Le formulaire (c'est du CF) :
<form action="#" name="monform" method="post">
<select name="ID_COM" onchange="cherche()">
<cfoutput query="cville">
<option value="#ID_COM#">#NCC#</option></cfoutput>
</select>
<br>
<input type="text" id="codepostal" name="codepostal" size="5" value="">
</form>
<div id="test"></div>



La fonction cherche()
function cherche(insee){
var xhr_object = null;
var insee = document.monform.ID_COM.value;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.onreadystatechange = function(){
if(xhr_object.readyState == 4 && xhr_object.status == 200){
monresultat = xhr_object.responseText;
alert(monresultat);
document.monform.codepostal.value = monresultat;
document.getElementById('test').innerHTML = monresultat;
}
}
xhr_object.open("POST","x_CP.cfm",true);
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
var data = "insee="+insee;
alert(data);
xhr_object.send(data);
}

8 réponses

1 2 3
Avatar
Jibé

c'était qque part sur Google ... (quand on cherche trim() )
Je sais je suis tout honteux mais je suis parti pratiquement

instantanément après avoir découvert que ma chaîne était polluée par des
retours de chariot donc pas recherché plus loin....
Ce matin tu avais la solution.............


Ce qui est curieux c'est que ton tuyau d'échappement laisse echapper des
retours chariots, faudrait peut-être lui offrir le catalytique ?
Ben oui c'est étrange et en plus ça vient semble-t-il de la fonction car

le CF me renvoit bien uniquement le CP...
De toutes les façons, vu le prix du gazoil je compte acheter un âne ;)

JiBé




Avatar
Jibé
Voili, voilà la fonction revue et corrigée et un peu améliorée pour
pouvoir servir plusieurs fois dans la même page.
ça peut sans doute aider quelqu'un un de ces jours tellement c'est bateau...

JiBé
PS : Testé et fonctionne sur
- Mac : Safari 1.2, FF 1.5.0.4
- XP Pro : FF 1.5.0.4, IE 6, Opera 9

<script type="text/javascript">
/* pour virer tous les caractères inutiles au début et à la fin de la
chaîne */

function trim(str) {
return str.replace(/(^s*)|(s*$)/g,"")
}

/* la fonction ajax en plus paramétrable */
function cherche(champdedepart,pagederequete,champdarrivee){
var xhr_object = null;
var x = document.getElementById(champdedepart).value;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.onreadystatechange = function(){
if(xhr_object.readyState == 4 && xhr_object.status == 200){
monresultat = xhr_object.responseText;
document.getElementById(champdarrivee).value = trim(monresultat);
}
}
xhr_object.open("POST",pagederequete,true);
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
var data = "id="+x;
xhr_object.send(data);
}
</script>

Le formulaire (le but est de récupérer le codepostal d'une ville et de
remplir le champ codepostal...)

<form action="" name="monform" method="post">
<select name="ID_COM" id="ID_COM"
onchange="cherche('insee','x_CP.cfm','codepostal')">

<!-- spécifique à ColdFusion -->
<cfoutput query="cville">
<option value="#insee#">#NCC#</option>
</cfoutput>
<!-- fin du spécifique à ColdFusion -->

</select>
<br>
<input type="text" id="codepostal" name="codepostal" size="5" value="">
</form>

la page x_cp.cfm est une bête requête sur une table avec envoie du
numéro insee de la commune et retour du codepostal quivabien
Avatar
Jibé
Voili, voilà la fonction revue et corrigée et un peu améliorée pour
pouvoir servir plusieurs fois dans la même page.
ça peut sans doute aider quelqu'un un de ces jours tellement c'est bateau...

JiBé
PS : Testé et fonctionne sur
- Mac : Safari 1.2, FF 1.5.0.4
- XP Pro : FF 1.5.0.4, IE 6, Opera 9

<script type="text/javascript">
/* pour virer tous les caractères inutiles au début et à la fin de la
chaîne */

function trim(str) {
return str.replace(/(^s*)|(s*$)/g,"")
}

/* la fonction ajax en plus paramétrable */
function cherche(champdedepart,pagederequete,champdarrivee){
var xhr_object = null;
var x = document.getElementById(champdedepart).value;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.onreadystatechange = function(){
if(xhr_object.readyState == 4 && xhr_object.status == 200){
monresultat = xhr_object.responseText;
document.getElementById(champdarrivee).value = trim(monresultat);
}
}
xhr_object.open("POST",pagederequete,true);
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
var data = "id="+x;
xhr_object.send(data);
}
</script>

Le formulaire (le but est de récupérer le codepostal d'une ville et de
remplir le champ codepostal...)

<form action="" name="monform" method="post">
<select name="ID_COM" id="ID_COM"
onchange="cherche('insee','x_CP.cfm','codepostal')">

<!-- spécifique à ColdFusion -->
<cfoutput query="cville">
<option value="#insee#">#NCC#</option>
</cfoutput>
<!-- fin du spécifique à ColdFusion -->

</select>
<br>
<input type="text" id="codepostal" name="codepostal" size="5" value="">
</form>

la page x_cp.cfm est une bête requête sur une table avec envoie du
numéro insee de la commune et retour du codepostal quivabien
Avatar
Florian Sinatra
*Florian Sinatra* @ 24/06/2006 16:03 :
Y'a ca pour commencer : <http://toutjavascript.com/savoir/savoir22.php3>


Chuis tombé aussi sur ca :
<http://www.evolt.org/article/Regular_Expressions_in_JavaScript/17/36435/>

Avatar
ASM

la page x_cp.cfm est une bête requête sur une table avec envoie du
numéro insee de la commune et retour du codepostal quivabien


Il y aurait-il moyen d'avoir un fichier
qui contiendrait le tableau complet ?

insee commune code postal

exemple:
'liste.js' ->
var liste = new Array(
'000000;Triffoully;00000',
'111111;Les Oies;11111'
}

ou même
'liste.txt' ->
000000;Triffoully;00000
111111;Les Oies;11111

pour s'affranchir du php

même si ce ne sera certainement pas plus rapide

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
JiBé
Si sûrement sauf que dans mon cas le fichier contient l'intégralité des
37 000 communes de France........
Un peu lourd en mémoire je pense ;)
Jibé
Il y aurait-il moyen d'avoir un fichier
qui contiendrait le tableau complet ?

insee commune code postal

exemple:
'liste.js' ->
var liste = new Array(
'000000;Triffoully;00000',
'111111;Les Oies;11111'
}

ou même
'liste.txt' ->
000000;Triffoully;00000
111111;Les Oies;11111

pour s'affranchir du php

même si ce ne sera certainement pas plus rapide



Avatar
Pierre Goiffon
ASM wrote:
PCRE il y en a des pages et des pages sur google
Le pb : la plupart ne traitent que de php
(comme si il n'y aurait que php qui existerait)

Personnellement j'aimerais assez trouver un PCRE pour JavaScript.
(en fr)


Dans le temps, il y avait le JavaScript reference sur
developer.netscape.com... Maintenant on peut trouver ça :
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp

En français, par là :
http://fr.selfhtml.org/javascript/objets/regexp.htm

Avatar
ASM
*Florian Sinatra* @ 24/06/2006 16:03 :
Y'a ca pour commencer : <http://toutjavascript.com/savoir/savoir22.php3>


Chuis tombé aussi sur ca :
<http://www.evolt.org/article/Regular_Expressions_in_JavaScript/17/36435/>


N'en jettez plus ! je crois que ça ira pour une 1ère approche :-)

J'ai tout mis en marque-pages
Dommage que les sites plus dédiés JS n'aient pas suivi la méthode
didactique du 1er lien donné (www.expreg.com) et malheureusement très
nettement orienté php

--
Stephane Moriaux et son [moins] vieux Mac


1 2 3