Les paramètres ne passent pas avec le xmlhttprequest

David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 - 29 mai 2006 à 16:05
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 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?

3 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
29 mai 2006 à 19:14
Salut,

Je viens de jeter un coup d'oeil dans mon moteur AJAX...

On dirait qu'il m'anque ça (pour la méthosd POST uniquement !!!) :
r.setRequestHeader("Method", "POST " + this.requestURI + " HTTP/1.1");

Où dans ton cas this.requesURI = 'cache.php';
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
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
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
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.
0
Rejoignez-nous