Attendre le chargement d'une frame...

Résolu
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 - 4 avril 2006 à 17:49
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 - 5 avril 2006 à 11:23
Bonjour,

J'ai une focntion javascript qui doit interooger une base de données. Pour cela je "triche" en remplissant un formulaire sur une autre frame, puis je le soumets. Ce formulaire s'appelle lui-même et la réponse se trouve dans un de ses champs.

Mon problème c'est que je n'arrive pas à attendre le chargement de la frame, une fois le formulaire soumis.

Soit j'utilise un "while", qui bloque la machine.
Soit j'utilise un "setTimeout" pour verifier que le formulaire est bien là, mais la fonction se termine (le setTimeout ne la bloquant pas) et me renvoit une chaine vide.

Si quelqu'un a une idée...

Mindiell

4 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2006 à 07:03
Bonjour,
à priori regarder XmlHttpRequest ( on parle parfois d'Ajax ).
il y a des exemples dans les sources de ce site.
Cordialement. Bul. ~
3
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
5 avril 2006 à 10:44
Bonjour

apparemment, l'évènement "onreadystatechange" n'est jamais lancé...
Pour s'en convaincre, tu place un alert("onreadystatechange lancée"); dans ta fonction onreadystatechange.(tu l'enleve après)

Essayer d'ouvrir le xml résultant dans une fenêtre à part. Si celui-ci est bien formé, il sera lisible ("parsé") par le navigateur, dans le cas contraire, l'erreur sera tout de suite visible . IE et FF ont effectivement des différences à ce niveau.
Pour ce faire : tu doit avoir un bout de code qui ressemble à ceci :

with (precharge) // ici, precharge est l'objet xmlHTTPrequest,
{
var filtre="p_devis=" + document.getElementById("anDint").value;
var bid=window.open ("modPrecharge.asp?" + filtre); // Cette ligne à rajouter pour le débuggage
open("POST", "modPrecharge.asp", true);
setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1") ;
send(filtre);

}

Attention au troisième argument de la méthode open (en vert) : Il indique que l'opération est asynchrone (true) ou synchrone (false). FF ne supporte que l'asynchrone, contrairement à IE.

Cordialement
Roro webDev
3
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
5 avril 2006 à 10:27
Ouaip !
Ca semble la bonne option, merci....

Mais (il y a toujours un mais ), j'ai copié collé l'exemple de ce site (présentation d'Ajax) et si ca marche plutot bien sur IE, ca marche pas du tout sur FireFox... Il me crée bien un objet, mais apparemment, l'évènement "onreadystatechange" n'est jamais lancé...

Mindiell Software
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
5 avril 2006 à 11:23
Bon, je lis ca, mais je viens de trouver la réponse tout seul :
"FF n'aime pas la methode synchrone"
Il serait bon que les auteurs de tutos mettent ca en gras et en rouge... :)

Mindiell Software
0
Rejoignez-nous