transmition de Formulaire POST vers popup

Mammouth du PHP | 19672 Messages

30 avr. 2008, 11:31

Je vais poser la question autrement : décris-moi les étapes successives du processus.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 11:59

Du processus d'ouverture du popup ou à partir que quand le client entre ses données ?? :P

Mammouth du PHP | 19672 Messages

30 avr. 2008, 12:07

À partir de la saisie jusqu'à l'affichage du popup.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 12:24

Ok....

donc....

le visiteur entre ses données dans les 2 champs, puis, il clique sur "Voir votre commande" un onclick prend la valeur dans les 2 champs et les met en paramètre dans la fonction getResult...
Cette fonction créer la requête AJAX ...

Après, elle ouvre une "connexion" POST à test_couple.php puis, spécifie les données à envoyer en POST à test_couple.php, elle dit également le Header... puis elle envoi le tout à test_couple.php

Après, on vérifie le statut de l'envoi...
si l'état est à 4 et que le statut est à 200 (aucune erreur HTTP), tout est bon...
Alors, on ouvre un popup modèle avec le nom "fenetre"
Après que le popup sois ouvert, on dois mettre le résultat de la requête dans le div "corps".... et c'est là que je plante....

Au fait, même que le résultat de la requete n'as pas pu être envoyer à au popup, AJAX retourne le bon résultat.... (vu dans Firebug..)

Merci à toi.

Mammouth du PHP | 19672 Messages

30 avr. 2008, 13:17

Bien, nous avons donc 4 fichiers :
- un (virtuel s'il est généré), la page html où le visiteur saisit ses données;
- un JavaScript qui contient le code de création de la requête AJAX et de traitement du retour;
- Un en PHP coté serveur qui traite la requête AJAX et retourne l'information attendue;
- le fichier html du popup qui sera ouvert et complété par le fichier JavaScript dès réception des données.

On est bien d'accord à ce stade ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 13:30

Exact, c'est ça :)

Mammouth du PHP | 19672 Messages

30 avr. 2008, 13:46

Ok, alors fais voir deux choses maintenant :
-1- la partie de code JS qui récupère les données retournées par le serveur, ouvre le popup et insère les informations;
-2- un copié/collé depuis Firebug de ce que te retourne le serveur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 14:03

Je n'est pas très bien compris se que tu demande au 1)... :?
/**
 * XMLHTTPRequest.
 */
/* Cration de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
 * Fonction prive qui va crer un objet XHR.
 * Cette fonction initialisera la valeur dans la variable globale dfinie
 * ci-dessus.
 */
function creerRequete()
{
    try
    {
        /* On tente de crer un objet XmlHTTPRequest */
        requete = new XMLHttpRequest();
    }
    catch (microsoft)
    {
        /* Microsoft utilisant une autre technique, on essays de crer un objet ActiveX */
        try
        {
            requete = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch(autremicrosoft)
        {
            /* La premire mthode a chou, on en teste une seconde */
            try
            {
                requete = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch(echec)
            {
                /*  ce stade, aucune mthode ne fonctionne... mettez donc votre navigateur  jour ;) */
                requete = null;
            }
        }
    }
    if(requete == null)
    {
        alert('Impossible de crer l\'objet requte,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
    }
}

function getResult(num_com, password) {
    /* Si il n'y a pas d'identifiant de rgion, on fait disparatre la seconde liste au cas o elle serait affiche */
    if(num_com != 'vide' || password != 'vide' ) {
        /* On cre l'objet XHR */
        creerRequete();
        /* Dfinition du fichier de traitement */
		var url = './test_couple_test.php'; 
		requete.open('POST', url, true);
		var data = "num_com=" + num_com +  "&password=" + password;
		requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		/* Envoi de la requte */ 
		requete.send(data);

        /* On surveille le changement d'tat de la requte qui va passer successivement de 1  4 */
        requete.onreadystatechange = function()
        {
            /* Lorsque l'tat est  4 */
            if(requete.readyState == 4) {
                /* Si on a un statut  200 */
                if(requete.status == 200) {
                    // Mise  jour de l'affichage, on appelle la fonction aproprie
					var options = 'height=700,width=650,toolbar=no,resizable=1,scrollbars=1';
					fenetre = window.open('./identifier_pop.html', 'fenetre', options); 
					
					// -4- Mettre la valeur souhaite dans cette nouvelle fenetre
					fenetre.document.getElementById('corps').innerHTML = requete.responseText;
					
                }
            }
        };
        requete.send(null);
    }
} 
pour le 2), ça marche... il me retourne
Le couple Numéro de Commande/Mot de passe est invalide...
ou les infos demandées en cas de validité... :)

Merci à toi

Mammouth du PHP | 19672 Messages

30 avr. 2008, 15:36

Je n'est pas très bien compris se que tu demande au 1)...
Visiblement si puisque tu as bien affiché ce que j'attendais.

Jusque là, ça semble bon : alors il se passe quoi ? As-tu bien dans le code HTML du popup un élément avec un attribut "id" avec la valeur "corps" ?

Et sinon, dans Firebug, est-ce qu'une erreur est affichée (onglet "Console") :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 15:58

le code html du popup : (identifier_pop.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>D&eacute;tails de votre Commande</title>
<style type="text/css">
body {background-color:#000000;color:#FFFFFF;}
h1 {text-align:center;}
</style>
</head>
<body>
<div id="corps">&nbsp;</div>
<div align="right"><a href="#" onclick="window.close()">[Fermer la Fen&ecirc;tre]</a></div>
 </body>
</html>
Je n'est rien dans Firebug qui semble suspect ni dans la console d'erreurs :s
Je t'envoie l'adresse par PM ;p

Merci à toi :)

Mammouth du PHP | 19672 Messages

30 avr. 2008, 16:28

Je regarderai ce soir en rentrant du bureau ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

30 avr. 2008, 19:41

Bon ok, vu : ben ça fonctionne ton truc non ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

30 avr. 2008, 23:26

ben celle là, c'est la version document.write.... et je pense que le script serais plus propre et peut-être plus "rapide" avec le getElementById('corps') et donc le modèle popup en HTML.... non ?

Mammouth du PHP | 19672 Messages

01 mai 2008, 00:25

Si cette méthode-ci fonctionne, tant mieux, problème résolu. Ceci dit, il serait tout aussi efficace d'avoir un popup à part. Reste à le faire fonctionner et je ne vois pas où est le problème :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 959 Messages

01 mai 2008, 00:26

qu'entends-tu par "popup à part" ?

Ceci dit, je met quand même résolu :D

Merci de toute ton aide et de ton efficacité ! :)