AJAX : Pobleme avec la method POST

Résolu/Fermé
camusdreck Messages postés 4 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 6 avril 2009 - 18 déc. 2008 à 12:00
camusdreck Messages postés 4 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 6 avril 2009 - 19 déc. 2008 à 06:52
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.

2 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
18 déc. 2008 à 13:21
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
camusdreck Messages postés 4 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 6 avril 2009
19 déc. 2008 à 06:52
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