Attendre le chargement d'une frame... [Résolu]

Signaler
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
-
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
Bonjour,
à priori regarder XmlHttpRequest ( on parle parfois d'Ajax ).
il y a des exemples dans les sources de ce site.
Cordialement. Bul. ~
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007

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
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
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
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
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