Rechercher : dans
Par :

AJAX : Pobleme avec la method POST

Dernière réponse le 19 déc 2008 à 06:52:33 camusdreck, le 18 déc 2008 à 12:00:29 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « AJAX : Pobleme avec la method POST » dans :
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
CGI - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont des données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement. Dans le cas du programme CGI, l'environnement est...
Introduction à RMI (Remote Method Invocation) VoirIntroduction à RMI RMI (Remote Method Invocation) est une API Java permettant de manipuler des objets distants (c'est-à-dire un objet instancié sur une autre machine virtuelle, éventuellement sur une autre machine du réseau) de manière...

1

Alain_42, le 18 déc 2008 à 13:21:46

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);

	
}

Répondre à Alain_42

2

 camusdreck, le 19 déc 2008 à 06:52:33

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é.

Répondre à camusdreck