什么是'xmlhttp.setRequestHeader();'在哪些情况下使用?

问题描述 投票:18回答:4

我在学习AJAX时偶然发现了这个命令。制作教程的人没有解释这个命令,命令中的参数是什么意思,它用于什么...下面是我用它的代码:

<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>
javascript ajax http request-headers
4个回答
19
投票

HTTP是一种协议。该协议的一部分是请求标头的概念。当xhr发生时,文本在客户端和服务器之间交换。请求标头是客户端发送到服务器的文本的一部分。

这是一种设置请求标头的方法。你看到的论点是

1)要设置的标头(在本例中为Content-type) 2)标头值。 (在这种情况下,x-www-form-urlencoded)

See this for more info.


3
投票

这正是它所说的。它将为下一个XMLHttpRequest设置“标题”信息。

标题几乎是一个键/值对。它用于将“元”信息传输到目标服务器以用于正在进行的请求。在您的特定实例中,它用于告诉服务器哪个内容类型用于此请求。


0
投票

它将Content-type HTTP标头设置为包含从表单发送的url编码数据。


0
投票

HTTP请求是根据设定例程(“协议” - 此处为超文本传输​​协议)从一个计算机系统传递到另一个计算机系统的消息,以便执行诸如发送数据,要求发回数据,更新先前发送的数据等操作。 。

标头基本上是关于HTTP请求正文中的数据的一条信息。其目的是告诉接收请求的机器请求正文中包含哪种类型的数据,其格式,使用的语言,设置cookie,日期,主机等。

可以在HTTP请求上放置多个标头,每个标头都有一个“名称”和一个“值”组件。在网页上看起来像

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

并且您会在元素内的网页顶部下方找到它们。

为了使人们能够从JavaScript函数中发送HTTP请求,我们创建了一个新的XMLHttpRequest对象,就像您的代码使用它一样。

xmlhttp = new XMLHttpRequest();

对于这个新的空对象,您打算添加数据。尽管名称如此,XMLHttpRequest还允许以XML以外的多种格式发送数据,例如XML。 HTML代码,文本,JSON等。在您的示例中,每个数据名称将通过“=”字符与其值分隔,并且每个数据/值配对将通过“&”字符与下一个配对分开。这种格式称为URL编码。

我们必须告诉接收计算机HTTP请求体内的数据是如何编码的。有一个standard header来传达这个,它通过方法setRequestHeader(..)添加到请求中。此方法使用2个参数,标题名称和标题的值。所有这些操作都是在生产线上实现的

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

在使用open(...)方法表征请求之后但在使用send(。)方法发送最终请求之前,必须将此setRequestHeader(..)方法应用于请求。

open(...)方法定义:(1)HTTP请求的类型,例如, GET / POST / PUT等; (2)包含该请求的处理脚本的网页,例如,一些.php或.js文件,它对后端数据库进行适当的查询; (3)请求动态的性质,例如异步请求被赋值为'true',同步请求被赋值为'false'。

send(。)方法附加要在请求主体内发送的数据,在您的情况下称为“参数”变量。

关于使用setRequestHeader(..)的哪种情况的更广泛的问题,我会说它在大多数HTTP请求情况下使用。但是添加到HTTP请求正文的some types of data数据会调用“Content-Type”标头的默认设置。

© www.soinside.com 2019 - 2024. All rights reserved.