Derniers tutoriels de développement web
 

AJAX - Envoyez une demande à un serveur


L'objet XMLHttpRequest est utilisé pour échanger des données avec un serveur.


Envoyez une demande à un serveur

Pour envoyer une demande à un serveur, nous utilisons l' open() et send() méthodes de l'objet XMLHttpRequest:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
méthode La description
open(method, url, async) Indique le type de demande

method : le type de demande: GET ou POST
url : le serveur (fichier) emplacement
async : true (asynchrone) ou false (synchrone)
send() Envoie la requête au serveur (utilisé pour GET )
send(string) Envoie la requête au serveur (utilisé pour POST )

GET ou POST ?

GET est plus simple et plus rapide que POST , et peut être utilisé dans la plupart des cas.

Cependant, toujours utiliser POST demandes lorsque:

  • Un fichier mis en cache est pas une option (mise à jour d'un fichier ou base de données sur le serveur).
  • Envoi d' une grande quantité de données sur le serveur ( POST a aucune limitation de taille).
  • Envoi d' entrée de l' utilisateur (qui peut contenir des caractères inconnus), POST est plus robuste et plus sûre que GET .

GET demandes

Une simple GET demande:

Exemple

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
Essayez - le vous - même »

Dans l'exemple ci-dessus, vous pouvez obtenir un résultat en cache. Pour éviter cela, ajouter un cadre unique ID to the URL: ID to the URL:

Exemple

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
Essayez - le vous - même »

Si vous voulez envoyer des informations à l' GET méthode, ajouter les informations à l'adresse URL:

Exemple

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
Essayez - le vous - même »

POST demandes

Une simple POST demande:

Exemple

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
Essayez - le vous - même »

Pour POST des données comme un formulaire HTML, ajoutez un en- HTTP header avec setRequestHeader() . Spécifiez les données que vous voulez envoyer dans le send() méthode:

Exemple

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Essayez - le vous - même »

méthode La description
setRequestHeader(header, value) Ajoute des en-têtes HTTP à la demande

header : spécifie le nom d' en- tête
value : spécifie la valeur d' en- tête

L'URL - un fichier sur un serveur

L' url paramètre de l' open() méthode, est une adresse à un fichier sur un serveur:

xhttp.open("GET", "ajax_test.asp", true);

Le fichier peut être tout type de fichier, comme .txt et .xml ou les fichiers de script de serveur comme .asp et .php (qui peut effectuer des actions sur le serveur avant d'envoyer la réponse en retour).


Asynchronous - True ou False ?

AJAX signifie Asynchronous JavaScript et XML, et pour l'objet XMLHttpRequest à se comporter comme AJAX, l' async paramètre de l' open() méthode doit être définie sur true:

xhttp.open("GET", "ajax_test.asp", true);

L'envoi des requêtes asynchrones est une énorme amélioration pour les développeurs web. Un grand nombre des tâches exécutées sur le serveur sont beaucoup de temps. Avant AJAX, cette opération pourrait entraîner l'application de suspendre ou d'arrêter.

Avec AJAX, JavaScript n'a pas à attendre la réponse du serveur, mais peut à la place:

  • exécuter d'autres scripts en attendant la réponse du serveur
  • faire face à la réponse lorsque la réponse prête

Async=true

Lorsque vous utilisez class = "notranslate" async = true, spécifier une fonction à exécuter lorsque la réponse est prêt en cas de onreadystatechange:

Exemple

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Essayez - le vous - même »

Vous en apprendrez plus sur onreadystatechange dans un chapitre ultérieur.


Async=false

Pour utiliser async=false , changer le troisième paramètre dans l' open() méthode pour faux:

xhttp.open("GET", "ajax_info.txt", false);

Utilisation async=false est pas recommandé, mais pour quelques petites demandes , cela peut être ok.

Rappelez-vous que le JavaScript ne va pas continuer à exécuter, jusqu'à ce que la réponse du serveur est prêt. Si le serveur est occupé ou lent, l'application se bloquer ou arrêter.

Remarque: Lorsque vous utilisez async=false , ne pas écrire une fonction onreadystatechange - il suffit de mettre le code après l' send() déclaration:

Exemple

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
Essayez - le vous - même »