RÉFÉRENCE : http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Méthode POST
Nous allons faire quelques modifications pour que la méthode POST soit utilisée lors de l'envoi de la requête...
var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
Certains en-têtes http doivent être définis avec toute demande POST. Nous les définissons donc dans ces lignes...
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
Avec les lignes ci-dessus, nous disons essentiellement que les données envoyées sont au format d'une soumission de formulaire. Nous indiquons également la longueur des paramètres que nous envoyons.
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
Nous avons défini un gestionnaire pour l'événement de changement de l'état de préparation. Il s'agit du même gestionnaire que nous avons utilisé pour la méthode GET. Vous pouvez utiliser le http.responseText ici - l'insérer dans un div en utilisant innerHTML(AHAH), l'évaluer(JSON) ou n'importe quoi d'autre.
http.send(params);
Enfin, nous envoyons les paramètres avec la requête. L'url donnée n'est chargée qu'après l'appel de cette ligne. Dans la méthode GET, le paramètre sera une valeur nulle. Mais dans la méthode POST, les données à envoyer seront envoyées comme argument de la fonction send. La variable params a été déclarée dans la deuxième ligne comme suit lorem=ipsum&name=binny
- nous envoyons donc deux paramètres - 'lorem' et 'name' avec les valeurs 'ipsum' et 'binny' respectivement.