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);
}

10 réponses

1 2 3
Avatar
Olivier Miakinen

return str.replace(/(^s*)|(s*$)/g,"")


(^s*) : nettoie le début
(s*$) : nettoie la fin
//g : nettoie les deux


ces regexpressions me resteront toujours de la magie bien mystérieuse.

nettoie quoi ? ou sont spécifiés 'espace', 'retour', étoussa ?


Petite explication de texte.

s = n'importe quel espace blanc (y compris t, r, n, f)
* = un nombre quelconque de fois ce qui précède (0 ou plus)
s* = un nombre quelconque d'espaces blancs
^ = début de ligne
$ = fin de ligne
^s* = un nombre quelconque d'espaces blancs en début de ligne
s*$ = un nombre quelconque d'espaces blancs en fin de ligne
( et ) = servent à regrouper (probablement inutiles ici)
| = alternative

g = option pour dire que l'on ne doit pas s'arrêter à la première
règle qui fonctionne mais continuer de façon globale.

"" = par quoi on remplace ce qu'on a trouvé, c.-à-d. par rien.


Sur fr.comp.lang.php, Florian Sinatra a indiqué une page excellente en
français : <http://www.expreg.com/>.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)



Avatar
ASM
ces regexpressions me resteront toujours de la magie bien mystérieuse.


Sur fr.comp.lang.php, Florian Sinatra a indiqué une page excellente en
français : <http://www.expreg.com/>.


mis : http://www.expreg.com/symbole.php en signet, mais je crains que
ça ne suffira pas pour créer et/ou lire des expressions régulières.

C'est absolument 'standard' le vocabulaire donné sur cette page ?
Je veux dire, tout ce qui est indiqué là est aussi bien compris par le
php, que le JS, ou BBEdit (éditeur texte) ?



--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Olivier Miakinen

mis : http://www.expreg.com/symbole.php en signet, mais je crains que
ça ne suffira pas pour créer et/ou lire des expressions régulières.

C'est absolument 'standard' le vocabulaire donné sur cette page ?
Je veux dire, tout ce qui est indiqué là est aussi bien compris par le
php, que le JS, ou BBEdit (éditeur texte) ?


<cit.>
The nice thing about standards is that there are so many of them to
choose from.
Andrew S. Tanenbaum
</cit.>

<traduction libre>
Ce qu'il y a de bien avec les standards, c'est qu'il y en a tant que tu
peux choisir celui que tu préfères.
</>

Il y a (eu) en réalité de nombreuses variantes des expressions
régulières, et il est donc vrai qu'il vaut mieux s'assurer que
celles que tu utilises correspondent à la doc que tu as. Cela dit,
une variante a fini par s'imposer, qui est à la fois l'une des
plus puissantes et des plus efficaces, et il s'agit de PCRE,
c'est-à-dire « Perl Compatible Regular Expressions ».

Cette variante est celle de JavaScript, et c'est aussi l'une des deux
qui sont implémentées dans PHP (fonctions commençant par preg_). Dans
PHP il y a une variante plus ancienne qui est celle du standard POSIX,
mais qui devrait disparaître à terme. Quant à BBedit, si j'en crois
<http://www.barebones.com/products/bbedit/threeway.shtml>, il supporte
les PCRE dans la version 8 mais pas dans la version Lite 6.1.

Avatar
ASM
mis : http://www.expreg.com/symbole.php
C'est absolument 'standard' le vocabulaire donné sur cette page ?
Je veux dire, tout ce qui est indiqué là est aussi bien compris par le
php, que le JS, ou BBEdit (éditeur texte) ?
...


<traduction libre>
Ce qu'il y a de bien avec les standards, c'est qu'il y en a tant que tu
peux choisir celui que tu préfères.


Oui, bon! c'est bien pour ça que j'ai précisé "je veux dire".
Parler de standard est assez utopique, sinon, au mieux, éphémère.

une variante a fini par s'imposer, qui est à la fois l'une des
plus puissantes et des plus efficaces, et il s'agit de PCRE,
c'est-à-dire « Perl Compatible Regular Expressions ».


Ne reste plus qu'à trouver un digest sur ce PCRE.
(à moins que ce digest ne soit justement la page citée plus haut ?)

Quant à BBedit, si j'en crois
<http://www.barebones.com/products/bbedit/threeway.shtml>, il supporte
les PCRE dans la version 8 mais pas dans la version Lite 6.1.


Alors, c'est certainement une bonne variante :-)

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
JiBé
Toutes mes excuses pour mon silence
j'ai dû partir précipitamment hier (ma prise de tête m'avait
complètement fait oublier l'heure qu'il était).
Encore merci pour votre aide à tous.
Je lis les messages et vous tiens au courant

JiBé
PS : CF c'est ColdFusion mais j'aime bien Conduit de Fumée aussi ;)



Comment "nettoyer" ma chaîne de caractère (je fais déjà un TRIM mais
celà ne supprime que les espaces...)


il y a une fonction php qui supprime espaces et retours (en fin de
chaine ? et ici, on dirait que ce serait en début)
http://fr.php.net/manual/fr/function.rtrim.php
et une autre pour le début :
http://fr.php.net/manual/fr/function.ltrim.php
voir si en asp ? ou en conduit de fumée ?





Avatar
Florian Sinatra
*ASM* @ 24/06/2006 02:02 :
reste plus qu'à trouver un digest sur ce PCRE.
(à moins que ce digest ne soit justement la page citée plus haut ?)


Voir aussi :
<http://ch2.php.net/manual/fr/reference.pcre.pattern.syntax.php>

Avatar
ASM
*ASM* @ 24/06/2006 02:02 :
reste plus qu'à trouver un digest sur ce PCRE.
(à moins que ce digest ne soit justement la page citée plus haut ?)


Voir aussi :
<http://ch2.php.net/manual/fr/reference.pcre.pattern.syntax.php>


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)

à moins que
"Perl Compatible Regular Expressions"
veuille dire
"Perl Compatible Regular Expressions for php"

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Jibé
YES!!!!!!!!!!! ça marche, impeccablement....
Un très grand merci car ce genre d'expression régulière je ne maîtrise
pas du tout, du tout, du tout....

Vraiment merci beaucoup pour votre disponibilité!!!
Je garde ça TRES précieusement

JiBé
PS : ça fait du bien !!!!!!!!!! quand tout à coup ça fonctionne.


trouvé aussi ça en JS

<script>
function trim(str) {
return str.replace(/(^s*)|(s*$)/g,"")
}
document.write(trim(chaine));
</script>

no sè si ça nettoie aussi la fin.
yè crois què si, les dos vouts




Avatar
Florian Sinatra
*ASM* @ 24/06/2006 11:17 :
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)


J'ai donné ce lien car il me semblait bien (à part qq détails comme les
délimiteurs).

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


Y'a ca pour commencer : <http://toutjavascript.com/savoir/savoir22.php3>

à moins que
"Perl Compatible Regular Expressions"
veuille dire
"Perl Compatible Regular Expressions for php"


Non, justement. La syntaxe ne varie pas en fonction de l'implémentation
(pour version de PCRE identique).

Avatar
ASM
YES!!!!!!!!!!! ça marche, impeccablement....
Un très grand merci car ce genre d'expression régulière je ne maîtrise
pas du tout, du tout, du tout....


c'était qque part sur Google ... (quand on cherche trim() )

Vraiment merci beaucoup pour votre disponibilité!!!
Je garde ça TRES précieusement


Ce qui est curieux c'est que ton tuyau d'échappement laisse echapper des
retours chariots, faudrait peut-être lui offrir le catalytique ?


--
Stephane Moriaux et son [moins] vieux Mac

1 2 3