11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Alors voilà j'ai un problème tout bête mais qui me prend la tête ...

J'ai un formulaire ou je rentre un pseudo + un message, sauf que je veux le faire en ajax,
Donc je veux envoyer les 2 argument au script php que j'ouvre avec ajax !

voici mon code AJAX:

function valider_livre() {
	
	var xhr = getXMLHttpRequest(); 
    var pseudo = document.getElementById('pseudo').value;
    var Message = document.getElementById('text').value;
    var reponse = xhr.responseText;   
    
	xhr.onreadystatechange = function()
	{
		if(xhr.readyState == 4) 
		{
		}
		if(xhr.readyState < 4)
		{
			document.getElementById('conteneur').innerHTML = '<img src="./images/chargement.gif" style="margin-left:45%;" />';
		}
	 };
	 
	xhr.open("POST", "./livredor/script-livredor.php", true);	
	xhr.send(pseudo+Message);


Voici mon code PHP :

$pseudo     = $_POST["pseudo"] ;
   $msg        = addslashes($_POST["Message"]) ;
   $date       = date('d/m/Y');
   

 if(!empty($msg) && isset($_POST['Envoyer'])){
        mysql_query("INSERT INTO livre_dor (id, date, pseudo, message) VALUES (NULL , '$date', '$pseudo', '$msg');");     
    }


Je veux savoir comment récupérer en POST les 2 argument envoyés par ajax ...

Merci d'avance
personnellement, je préfère passé par jquery, je te conseille de commencer par la méthode directe pour comprendre le mécanisme. En premier, dans ton code xhr est valable si ce n'Est pas internet explorer sinon ajoute ça:
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
ensuite, construit ton objet en lui donnant
xhr.open('GET', "search_a.php?quoi=B&type="+searchType, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
'GET' pour la methode d'appel,
"search_a.php?quoi=B&type="+searchType c'est mon fichier php appelé avec ces paramètres
true pour méthode asynchrone
ensuite L'appel de xhr.onreadystatechange
tu récupère la reponse par xhr.responseText si le resultat est juste du text
sinon par xhr.responseXML si tu récupère du DOM
nassim68 a écrit :
personnellement, je préfère passé par jquery, je te conseille de commencer par la méthode directe pour comprendre le mécanisme. En premier, dans ton code xhr est valable si ce n'Est pas internet explorer sinon ajoute ça:
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
}

IE supporte l'objet XMLHttpRequest depuis sa version 7. Et la question porte sur une requête HTTP de type POST.
Modifié par Julien Royer (26 Jun 2012 - 22:13)
alors j'ai essayé ça ..

xhr.send(pseudo&Message);


et j'essaye de récupérer en POST toujours :

$pseudo     = $_POST["pseudo"] ;
$msg        = addslashes($_POST["Message"]) ;


ça ne marche toujours pas Smiley ohwell est ce que ça vient de là à votre avis ?
As-tu au moins lu la page que j'ai pointée ?

La syntaxe est la suivante :
xhr.send("var1=valeur1&var2=valeur2");

Ensuite, le tutoriel le plus basique sur JS t'apprendra comment remplacer "valeur1" par la valeur de ta variable pseudo.
xhr.send("pseudo=" + pseudo + "&var2=valeur2");

Il faut bien entendu échapper les caractères spéciaux de "pseudo" mais je te fais confiance pour chercher attentivement sur le Web pourquoi et comment le faire...
Oui oui j'ai bien regardé ton lien mais sans succès, c'est pourquoi j'ai essayé 10 000 méthodes Smiley rolleyes !! et j'ai enfin trouvé le problème, j'ai un petit peu honte mais je vais partager pour que ça sert de leçon ^^ !

Donc dans mon code ajax, j'ai oublié la ligne :
 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
...

Du coup, je reçois bien les 2 arguments que je souhaite :
xhr.send("pseudo="+pseudo+"&message="+message);	


en récupérant dans mon fichier PHP comme ceci :
$pseudo     = $_POST["pseudo"];
$msg        = addslashes($_POST["message"]) ; 


Voilà, en tout cas merci Julien, et Bon Dimanche Smiley biggrin
Hello,
aspiker a écrit :
en récupérant dans mon fichier PHP comme ceci :
$pseudo     = $_POST[&quot;pseudo&quot;];
$msg        = addslashes($_POST[&quot;message&quot;]) ; 

Pourquoi échapper msg et pas pseudo ?
hum en effet, tout simplement parce que j'ai oublié de le remettre ... c'était pour voir si mon problème pouvait venir de là Smiley smile