20

我在学习 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>
4

4 回答 4

22

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

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

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

有关更多信息,请参阅此内容。

于 2012-01-16T16:02:31.370 回答
7

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

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

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

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

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

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

const xmlhttp = new XMLHttpRequest();

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

我们必须告诉接收计算机 HTTP 请求正文中的数据是如何编码的。有一个标准标头来传达这一点,并通过setRequestHeader(..)方法将其添加到请求中。此方法使用 2 个参数,标题名称和标题的值。所有这些操作都是在线实现的

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

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

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

send(.)方法附加要在请求正文中发送的数据,在您的情况下是称为“参数”的变量。

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

于 2019-04-29T13:22:06.940 回答
3

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

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

于 2012-01-16T16:04:49.903 回答
0

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

于 2012-01-16T16:03:22.030 回答