Question

Je suis tombé sur cette commande tout en apprenant Ajax. Le gars qui a fait le tutoriel n'a pas expliqué cette commande, que signifient les paramètres à l'intérieur de la commande et pour quoi il est utilisé ... ci-dessous le code dans lequel je l'ai utilisé:

<script type="text/javascript">

        function insert(){
            if(window.XMLHttpRequest){
                xmlhttp = new XMLHttpRequest();
            }else{
                xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            };

            xmlhttp.onreadystatechange = function(){
                if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                    document.getElementById('message').innerHTML = xmlhttp.responseText;
                };  
            };

            parameters = 'insert_text='+document.getElementById('insert_text').value;

            xmlhttp.open('POST','ajax_posting_data.php',true);
            xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            xmlhttp.send(parameters);
        };

    </script>
Était-ce utile?

La solution

HTTP est un protocole. Une partie de ce protocole est le concept des en-têtes de demande. Lorsqu'un XHR se produit, le texte est échangé entre le client et le serveur. Les en-têtes de demande font partie du texte que le client envoie au serveur.

C'est une façon de définir les en-têtes de demande. Les arguments que vous voyez sont

1) L'en-tête à régler (dans ce cas, Type de contenu)
2) la valeur d'en-tête. (dans ce cas, x-www-forlencod)

Voir ceci pour plus d'informations.

Autres conseils

C'est exactement ce qu'il dit. Il définira une information "d'en-tête" pour la prochaine XMLHttpRequest.

Un en-tête est à peu près une paire clé / valeur. Il est utilisé pour transmettre des informations "Meta" au serveur cible pour la demande en cours. Dans votre instance particulière, il est utilisé pour indiquer au serveur quel type de contenu est utilisé pour cette demande.

Les demandes HTTP sont des messages passés d'un système informatique à un autre selon une routine définie (un «protocole» - ici HyperText Transférer Protocol) Afin de faire des choses comme envoyer des données, demander que les données soient renvoyées, mettez à jour les données envoyées précédemment, etc.

Un en-tête est essentiellement une information sur les données du corps de la demande HTTP. Son objectif est de dire à la machine recevant la demande quel type de données est enfermé dans le corps de la demande, son formatage, la langue utilisée, si c'est pour définir un cookie, la date, la machine hôte, etc.

Plus d'un en-tête peut être placé sur une demande HTTP et chaque en-tête a un composant «nom» et un «valeur». Sur les pages Web, ils ressemblent

<meta name="........" content="............."/>

Et vous les trouvez juste en dessous du haut de la page Web de l'élément.

Pour permettre aux gens d'envoyer des demandes HTTP à partir d'une fonction JavaScript, nous créons un nouvel objet XMLHTTPRequest, tout comme votre code le fait avec

xmlhttp = new XMLHttpRequest();

À ce nouvel objet vide, vous avez l'intention d'ajouter des données. Malgré son nom, XMLHTTPRequest permet également d'envoyer des données dans un certain nombre de formats autres que XML, par exemple le code HTML, le texte, JSON, etc. Dans votre exemple, chaque nom de données sera séparé de sa valeur par un caractère "=" et chaque données / Data / L'apparition de la valeur sera séparée de l'appariement suivant par un caractère "&". Ce type de formatage est appelé codage d'URL.

Nous devons expliquer à l'ordinateur de réception comment les données du corps de la demande HTTP sont codées. Il y a un en-tête standard Pour transmettre cela et il est ajouté à la demande via la méthode setRequestHeader (..). Cette méthode utilise 2 paramètres, le nom d'en-tête et la valeur de l'en-tête. Toute cette opération est réalisée dans la ligne

xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

Cette setRequestHeader (..) la méthode doit être appliquée à la demande après La demande est caractérisée par le ouvert(...) Méthode mais avant de La demande finale est envoyée avec le envoyer(.) méthode.

La ouvert(...) La méthode définit: (1) le type de demande HTTP, par exemple GET / POST / PUT, etc.; (2) la page Web qui contient le script de gestion pour cette demande, par exemple un fichier .php ou .js qui fait la requête appropriée à la base de données arrière; et (3) la nature de la dynamique des demandes, par exemple les demandes asynchrones se voient attribuer une valeur «vrai», les demandes synchrones se voient attribuer «false».

La envoyer(.) La méthode attache les données à envoyer dans le corps de la demande, dans votre cas la variable appelée «paramètres».

Sur votre question plus large pour quelles situations setRequestHeader (..) est utilisé, je dirais qu'il est utilisé dans la plupart des situations de demande HTTP. Mais Quelques types de données Les données ajoutées au corps d'une demande HTTP invoquent un paramètre par défaut pour l'en-tête «Type de contenu».

Il définit l'en-tête HTTP de type contenu pour contenir des données codées URL envoyées à partir d'un formulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top