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

Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention - 4 avril 2006 à 17:49 - Dernière réponse : Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 5 avril 2006 à 07:03
3
Merci
Bonjour,
à priori regarder XmlHttpRequest ( on parle parfois d'Ajax ).
il y a des exemples dans les sources de ce site.
Cordialement. Bul. ~

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_bultez
Meilleure réponse
cs_roro06 732 Messages postés jeudi 2 janvier 2003Date d'inscription 29 octobre 2007 Dernière intervention - 5 avril 2006 à 10:44
3
Merci
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

Merci cs_roro06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_roro06
Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention - 5 avril 2006 à 10:27
0
Merci
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
Commenter la réponse de Mindiell
Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention - 5 avril 2006 à 11:23
0
Merci
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
Commenter la réponse de Mindiell

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.