向服務(wù)器發(fā)送請求
如需向服務(wù)器發(fā)送請求,我們使用 XMLHttpRequest 對象的?open()
?和?send()
?方法:
xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
方法 | 描述 |
---|---|
open(method,?url,?async) | 規(guī)定請求的類型
|
send() | 向服務(wù)器發(fā)送請求(用于 GET) |
send(string) | 向服務(wù)器發(fā)送請求(用于 POST) |
?
GET 還是 POST?
GET 比 POST 更簡單更快,可用于大多數(shù)情況下。
不過,請在以下情況始終使用 POST:
- 緩存文件不是選項(更新服務(wù)器上的文件或數(shù)據(jù)庫)
- 向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 無大小限制)
- 發(fā)送用戶輸入(可包含未知字符),POST 比 GET 更強(qiáng)大更安全
一條簡單的 GET 請求:
xhttp.open("GET", "demo_get.asp", true); xhttp.send();
在上面的例子中,您可能會獲得一個緩存的結(jié)果。為了避免此情況,請向 URL 添加一個唯一的 ID:
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true); xhttp.send();
如果您需要用 GET 方法來發(fā)送信息,請向 URL 添加這些信息:
xhttp.open("GET", "demo_get2.asp?fname=Bill&lname=Gates", true); xhttp.send();
一條簡單的 POST 請求:
xhttp.open("POST", "demo_post.asp", true); xhttp.send();
如需像 HTML 表單那樣 POST 數(shù)據(jù),請通過?setRequestHeader()
?添加一個 HTTP 頭部。請在?send()
?方法中規(guī)定您需要發(fā)送的數(shù)據(jù):
xhttp.open("POST", "ajax_test.asp", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Bill&lname=Gates");
方法 | 描述 |
---|---|
setRequestHeader(header,?value) | 向請求添加 HTTP 頭部
|
?
url?- 服務(wù)器上的文件
open() 方法的?url?參數(shù),是服務(wù)器上文件的地址:
xhttp.open("GET", "ajax_test.asp", true);
異步 - true 還是 false?
如需異步發(fā)送請求,open()
?方法的?async?參數(shù)必須設(shè)置為?true
:
xhttp.open("GET", "ajax_test.asp", true);
發(fā)送異步請求對 web 開發(fā)人員來說是一個巨大的進(jìn)步。服務(wù)器上執(zhí)行的許多任務(wù)都非常耗時。在 AJAX 之前,此操作可能會導(dǎo)致應(yīng)用程序掛起或停止。
通過異步發(fā)送,JavaScript 不必等待服務(wù)器響應(yīng),而是可以:
- 在等待服務(wù)器響應(yīng)時執(zhí)行其他腳本
- 當(dāng)響應(yīng)就緒時處理響應(yīng)
onreadystatechange 屬性
通過 XMLHttpRequest 對象,您可以定義當(dāng)請求接收到應(yīng)答時所執(zhí)行的函數(shù)。
這個函數(shù)是在 XMLHttpResponse 對象的?onreadystatechange
?屬性中定義的:
xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
?如需執(zhí)行同步的請求,請把?open()
?方法中的第三個參數(shù)設(shè)置為?false
:
xhttp.open("GET", "ajax_info.txt", false);
有時 async = false 用于快速測試。你也會在更老的 JavaScript 代碼中看到同步請求。
由于代碼將等待服務(wù)器完成,所以不需要 onreadystatechange 函數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-797884.html
xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
同步的 XMLHttpRequest (async = false),因為 JavaScript 將停止執(zhí)行直到服務(wù)器響應(yīng)就緒。如果服務(wù)器繁忙或緩慢,應(yīng)用程序?qū)炱鸹蛲V埂?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-797884.html
到了這里,關(guān)于JavaScript中最重要的一環(huán)之一,ajax發(fā)送請求??!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!