Les paramètres ne passent pas avec le xmlhttprequest
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 2006
-
29 mai 2006 à 16:05
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 2007
-
30 mai 2006 à 12:18
bonjour à tous,
voici une partie de mon code:
xhr5.onreadystatechange = function()
{
document.message.text.value=''; if(xhr5.readyState 4 && xhr5.status 200)
{
document.message.text.value='';
//document.getElementById('page').innerHTML+=pseudo+" ["+temps_total+"] : "+text+"
";
document.getElementById('page').scrollTop=document.getElementById('page').scrollHeight;
document.getElementById('page').innerHTML+=text;
document.getElementById('cache').innerHTML+=text;
}
}
xhr5.open("POST","cache.php",true);
xhr5.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr5.send('param=3');
Le problème, c'est que lorsque je fais un test sur l'existence de $_POST['param'] dans la page cache.php , il me dis qu'il n'existe pas. Je suis totalement désespéré, si une bonne âme pouvait m'aider... Il faut absolument que j'arrive à récupérer ce paramètre, car j'ai basé le restant de mon code sur cela. J'ai essayé en mettant les 2 page dans la même iframe, puis en mettant cache.php dans une iframe différente, et à chaque fois le résultat est le même.... Auriez-vous une idée de l'origine du problème?
A voir également:
Les paramètres ne passent pas avec le xmlhttprequest
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 30 mai 2006 à 11:54
bonjour, et avant tout merci de ton aide (j'ai remarqué que l'aide concernant l'ajax et xmlhttprequest est assez rare, surement parce que peu de personnes l'utilisent).
J'ai ajouté la ligne suivante:
xhr5.setRequestHeader("Method", "POST " + this.requestURI = "cache.php");
Cependant, mon problème n'est toujours pas résolu, puisque je ne parviens toujours pas à récupérer le paramètre envoyé.
Aurais-tu une autre idée?
Merci quand même
David
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 20079 30 mai 2006 à 12:18
Je suppose que tu as aussi mis le HTTP 1.1 ...
Alors, comme je n'ai pas plus d'idée, je ne peux que te conseiller de vérifier l'écriture des données (var=val&var=val&truc=chose)
Et te donner mon bout de script pour que tu vois comment je fais...
Je constitue les données à transmettre ainsi :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="Generator" content="Kate, the KDE Advanced Text Editor" />if(this._dataToSend!='') this._dataToSend += '&';
this._dataToSend += escape(dataName)+'='+escape(dataValue);
Ensuite pour envoyer les données :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="Generator" content="Kate, the KDE Advanced Text Editor" />r = this._getRequestObject();
r.open(this.requestMethod, this.requestURI, this.asynchronousMode);
if (this.requestMethod == 'POST') {
try {
r.setRequestHeader("Method", "POST " + this.requestURI + " HTTP/1.1");
r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
} catch(e) {
alert("Your browser does not appear to support asynchronous requests using POST.");
return false;
}
}
Puis je défini la fonction onreadystatechange (je ne sais pas pourquoi ici...)
Puis envoie des données
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="Generator" content="Kate, the KDE Advanced Text Editor" />// Avant, il y'a un si method == 'POST', postData = this._dataToSend, sinson postData = '';
r.send(postData);
Et c'est un peu pret tout...
Note, j'utilise à 99% la méthode POST dans mes scripts AJAX.