1. 程式人生 > >javascript XMLHttpRequest 物件的open() 方法引數說明

javascript XMLHttpRequest 物件的open() 方法引數說明

下文是從w3c上摘錄下來的,其中引數 method 說明的很簡短,不是很理解,所以又找了些資料作為補充。文中帶括號部分。

XMLHttpRequest.open()

初始化 HTTP 請求引數

語法
open
(method, url, async, username, password)

method 引數是用於請求的 HTTP 方法。值包括 GET、POST 和 HEAD。

( 大小寫不敏感

POST:用"POST"方式傳送資料,可以大到4MB
GET:用"GET"方式傳送資料,只能256KB
如果請求帶有引數的化實用POST方式,POST方式將引數放置在頁面的隱藏控制元件內
沒有引數使用GET方式
對於請求的頁面在中途可能發生更改的,也最好用POST方式

)

url 引數是請求的主體。大多數瀏覽器實施了一個同源安全策略,並且要求這個 URL 與包含指令碼的文字具有相同的主機名和埠。

async 引數指示請求使用應該非同步地執行。如果這個引數是 false,請求是同步的,後續對 send() 的呼叫將阻塞,直到響應完全接收。

如果這個引數是 true 或省略,請求是非同步的,且通常需要一個 onreadystatechange 事件控制代碼。

username password 引數是可選的,為 url 所需的授權提供認證資格。如果指定了,它們會覆蓋 url 自己指定的任何資格。

說明

這個方法初始化請求引數以供 send() 方法稍後使用。它把 readyState 設定為1,刪除之前指定的所有請求頭部,以及之前接收的所有響應頭部,

並且把 responseText、responseXML、status 以及statusText 引數設定為它們的預設值。

當 readyState 為 0 的時候(當 XMLHttpRequest 物件剛建立或者abort() 方法呼叫後)以及當 readyState 為 4時(已經接收響應時),

呼叫這個方法是安全的。

當針對任何其他狀態呼叫的時候,open() 方法的行為是為指定的。

除了儲存供 send() 方法使用的請求引數,以及重置 XMLHttpRequest 物件以便複用,open() 方法沒有其他的行為。

要特別注意,當這個方法呼叫的時候,實現通常不會開啟一個到 Web 伺服器的網路連線。

舉例

1 同步方式

var xmlhttp=newXMLHttpRequestObj ();

xmlhttp.open('post','xxx.asp?s=dc',false);

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

alert('do something.....')

2 非同步方式

var sendStr='?a=1&b=2'; //url 的引數

var xmlhttp=newXMLHttpRequestObj ();
xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4){   
        if(xmlhttp.status==200){
           alert(xmlhttp.responseText);
            //other.......
        }
    }
}
xmlhttp.open('post','xxx.asp',true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(sendStr);