AJAX : Pobleme avec la method POST

Résolu
camusdreck Messages postés 4 Statut Membre -  
camusdreck Messages postés 4 Statut Membre -
Bonjour,

Je suis un gros newbie en AJAX et j'ai quelques petit soucis avec la méthode POST
Voila mon code.

function modifierFiche(){
	
	
	var xhr = testAjax();
	//on définit ce que l'on aura a faire lorsque l'on aura la réponse
	xhr.onreadystatechange = function(){	
										if (xhr.readyState == 4 && xhr.status == 200)
										{
											document.write (xhr.responseText);
										}
	}
	var url = "ajouter.php";
	xhr.open("POST", url , true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	var numero = document.getElementById('numero').value;
	var nom = document.getElementById('nom').value;
	var prenom = document.getElementById('prenom').value;
	var adresse = document.getElementById('adresse').value;
	var tel = document.getElementById('telephone').value;
	var perime = document.getElementById('perime').value;
	var mail = document.getElementById('mail').value;
	var pass = document.getElementById('pass').value;
	var data = "file="+ url +"&numero="+ numero +"&nom=" + nom +  "&prenom=" + prenom + "&adresse=" + adresse + "&telephone="+ tel + "&perime="+ perime+ "&mail="+ mail + "&pass="+ pass;
	
	xhr.send(data);

	
}


J'utilise un onclick pour lancer cette fonction.
Lorsque l'on clique le bouton firebug me renvoie ce message
Firebug needs to POST to the server to get this information for url:
http://localhost/www.XXXXXX.sit/admin/ajouter.php

This second POST can interfere with some sites. If you want to send the POST again, open a new tab in Firefox, use URL 'about:config', set boolean value 'extensions.firebug.allowDoublePost' to true
This value is reset every time you restart Firefox This problem will disappear when https://bugzilla.mozilla.org/show_bug.cgi?id=430155 is shipped.
Configuration: Windows XP 
Firefox 3.0.5

2 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    Bonjour,

    a mon avis c'est pas bon au début de ta fonction qd tu crée ta request, essayes comme ça:

    function modifierFiche(){
    	var xhr = false;
    		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                xhr = new XMLHttpRequest();
                if (xhr.overrideMimeType) {
                    xhr.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
    
            if (!xhr) {
                alert('Abandon :( Impossible de créer une instance XMLHTTP');
                return false;
            }
    	
    	//on définit ce que l'on aura a faire lorsque l'on aura la réponse
    	xhr.onreadystatechange = function(){	
    										if (xhr.readyState == 4 && xhr.status == 200)
    										{
    											document.write (xhr.responseText);
    										}
    	}
    	var url = "ajouter.php";
    	xhr.open("POST", url , true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    	var numero = document.getElementById('numero').value;
    	var nom = document.getElementById('nom').value;
    	var prenom = document.getElementById('prenom').value;
    	var adresse = document.getElementById('adresse').value;
    	var tel = document.getElementById('telephone').value;
    	var perime = document.getElementById('perime').value;
    	var mail = document.getElementById('mail').value;
    	var pass = document.getElementById('pass').value;
    	var data = "file="+ url +"&numero="+ numero +"&nom=" + nom +  "&prenom=" + prenom + "&adresse=" + adresse + "&telephone="+ tel + "&perime="+ perime+ "&mail="+ mail + "&pass="+ pass;
    	
    	xhr.send(data);
    //pour voir si ça part:
    alert("Data envoye :"+data);
    
    	
    }
    
    0
  2. camusdreck Messages postés 4 Statut Membre
     
    Voici le code que j'ai mis pour déclaré xhr

    function testAjax() {
    var xhr = null;

    if (window.XMLHttpRequest){// Firefox
    xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject){//Internet Explorer
    try{
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e){
    xhr= new ActiveXObject ("Microsoft.XMLHTTP");
    }
    }
    else {
    // XMLHttpRequest n'est pas supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHttpRequest ...");
    xhr = false;
    }
    return xhr ;
    }

    **********************************

    J'ai trouvé la reponse, en effet mon probleme ne venez pas de mon code ci-dessus mais plutot de mon "ajouter.php" .
    En ajoutant :

    $num = $_REQUEST['numero'];
    $nom = $_REQUEST['nom'];
    $prenom = $_REQUEST['prenom'];
    $adr = $_REQUEST['adresse'];
    $tel = $_REQUEST['telephone'];
    $perime = $_REQUEST['perime'];
    $mail = $_REQUEST['mail'];
    $pass = $_REQUEST['pass'];
    echo '<script> alert("' .$num .'")</script>';

    Au lieu de :

    $num = $_POST['numero'];
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
    $adr = $_POST['adresse'];
    $tel = $_POST['telephone'];
    $perime = $_POST['perime'];
    $mail = $_POST['mail'];
    $pass = $_POST['pass'];
    echo '<script> alert("' .$num .'")</script>';

    ******************************************
    Merci pour ton aide, l'idée de l'alerte aprés le send() m'a beaucoup aidé.
    0