XMLHttpRequest 对象用于从服务器请求数据。
要将请求发送到服务器,我们使用open()和send()方法XMLHttpRequest
目的:
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method | Description |
---|---|
open(method, url, async) | Specifies the type of request method: the type of request: GET or POST url: the server (file) location async: true (asynchronous) or false (synchronous) |
send() | Sends the request to the server (used for GET) |
send(string) | Sends the request to the server (used for POST) |
URL参数open()
方法,是服务器上文件的地址:
xhttp.open("GET", "ajax_test.html", true);
该文件可以是任何类型的文件,例如.txt和.xml,也可以是服务器脚本的文件,例如.html和.html(在将响应发送回响应之前,可以在服务器上执行操作)。
服务器请求应该异步发送。
Open()方法的异步参数应设置为true:
xhttp.open("GET", "ajax_test.html", true);
通过异步发送,JavaScript不必等待服务器响应,而是可以:
async 参数的默认值为 async = true。
您可以安全地从代码中删除第三个参数。
不建议使用同步XMLHTTPREQUEST(async = false),因为JavaScript将停止执行直到服务器响应准备就绪。如果服务器忙或慢,则应用程序将悬挂或停止。
GET
比比POST
,并且可以在大多数情况下使用。
但是,在以下情况下请始终使用 POST 请求:
一个简单的GET
要求:
在上面的示例中,您可能会得到缓存的结果。为了避免这种情况,请向 URL 添加唯一 ID:
如果您想与GET
方法,将信息添加到URL:
服务器如何使用输入以及服务器如何响应请求,将在后面的章节中解释。
一个简单的POST
要求:
要像HTML表单一样发布数据,请添加一个HTTP标头setRequestHeader()
。指定要发送的数据send()
方法:
xhttp.open("POST", "ajax_test.html");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
亲自试一试 »
Method | Description |
---|---|
setRequestHeader(header, value) | Adds HTTP headers to the request header: specifies the header name value: specifies the header value |
要执行同步请求,请更改open()
方法false
:
xhttp.open("GET", "ajax_info.txt", false);
有时 async = false 用于快速测试。您还将在较旧的JavaScript代码中找到同步请求。
由于代码将等待服务器完成,因此无需onreadystatechange
功能:
xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
亲自试一试 »
不建议使用同步XMLHTTPREQUEST(async = false),因为JavaScript将停止执行直到服务器响应准备就绪。如果服务器忙或慢,则应用程序将悬挂或停止。
鼓励现代开发人员工具警告使用同步请求,并在发生时可能会引发InvalidAccesserror例外。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!