最新的Web開發教程
 

AJAX - 發送一個請求到服務器


XMLHttpRequest對象來與服務器交換數據。


發送請求到服務器

發送一個請求到服務器,我們使用open()send() XMLHttpRequest對象的方法:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
方法 描述
open(method, url, async) 指定請求的類型

method :請求的類型: GETPOST
url :服務器(文件)的位置
asynctrue (異步)或false (同步)
send() 將請求發送給服務器(用於GET
send(string) 將請求發送給服務器(用於POST

GETPOST

GET是簡單和速度比POST ,可在大多數情況下被使用。

然而,始終使用POST請求時:

  • 緩存的文件不是一個選項(更新服務器上的文件或數據庫)。
  • 發送大量的數據到服務器( POST沒有大小限制)。
  • 發送用戶輸入(可以包含未知字符), POST更加強大和安全比GET

GET請求

一個簡單的GET請求:

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
試一試»

在上面的例子中,你可能會得到一個緩存的結果。 為了避免這種情況,添加一個唯一ID to the URL: ID to the URL:

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
試一試»

如果你想與信息發送GET方法,將信息添加到URL:

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
試一試»

POST請求

一個簡單的POST請求:

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
試一試»

POST數據,如一個HTML表單,添加一個HTTP headersetRequestHeader() 指定要在發送數據send()方法:

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
試一試»

方法 描述
setRequestHeader(header, value) 添加HTTP標頭的請求

header :指定頭名
value :指定頭值

網址 - 上的文件服務器

url的參數open()方法,是一個地址到服務器上的文件:

xhttp.open("GET", "ajax_test.asp", true);

該文件可以是任何類型的文件,如.txt和.xml或類似的.asp和.PHP(可發送回響應之前在服務器上執行的操作)服務器的腳本文件。


異步- True還是False

AJAX代表了異步JavaScript和XML,以及XMLHttpRequest對象的行為與AJAX的async的參數open()方法,已被設置為true:

xhttp.open("GET", "ajax_test.asp", true);

發送異步請求是Web開發人員一個巨大的進步。 許多的服務器上執行的任務是非常耗時。 AJAX之前,這種操作可能會導致掛起或停止應用程序。

隨著AJAX,在JavaScript沒有等待服務器的響應,而是可以:

  • 執行其他腳本在等待服務器響應
  • 處理時的響應的響應就緒

Async=true

當使用類=“notranslate”新增異步=真實,指定一個功能,當響應是onreadystatechange事件準備執行:

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
試一試»

您將了解的onreadystatechange在後面的章節。


Async=false

要使用async=false ,更改第三個參數open()方法為false:

xhttp.open("GET", "ajax_info.txt", false);

使用async=false不建議,但對於一些小的請求,這可能是好的。

請記住,JavaScript就無法繼續執行,直到服務器響應準備。 如果服務器太忙或太慢,應用程序將掛起或停止。

注意:當您使用async=false ,不寫一個函數的onreadystatechange -只要把代碼後send()語句:

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
試一試»