xmlhttp.open 的參數決定

問題:open方法的第一個參數不論寫"GET"或是"POST",在Process裡都是調用的doPost方法?為什麼不調用doGet方法?
答案:按照哪種方式提交不是由open()方法的第一個參數完全決定的,還與send()方法有關。

一、當open()方法裡指定的是GET,並且
1、send()方法的參數是""或者null,跟踪代碼可以知道調用了Servlet中的doGet方法
2、send()方法的參數是地址重寫的方式,或者就是一個字符串,都調用doPost方法,例如:
xmlHttp.open("GET", "ProcessServlet?choose="+document.getElementById("choosejsfile").value, true);//open裡調用GET方法。
xmlHttp.send("aaa=dd"); //a
xmlHttp.send("paramTest"); //b
xmlHttp.send(" "); //c
xmlHttp.send(null); //d
xmlHttp.send(""); //e
對於a、b、c、d、e五中send()函數,只有d和e會調用doGet方法,a、b、c三種方式均調用doPost方法。

二、當open()方法裡指定的是POST,則對於以上5種send()函數,服務器均會調用doPost方法。
所以使用哪種方式提交是由open方法和send方法共同決定的。

xmlhttp:open方法創建一個新的http請求,並指定此請求的方法、URL以及驗證信息語法
oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword);
參數
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。 http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
/*****
POST:用"POST"方式發送數據,可以大到4MB
GET:用"GET"方式發送數據,只能256KB
如果請求帶有參數的化實用POST方式,POST方式將參數放置在頁面的隱藏控件內沒有參數使用GET方式對於請求的頁面在中途可能發生更改的,也最好用POST方式用GET方式可能會拿不到最新的信息
*****/
bstrUrl
請求的URL地址,可以為絕對地址也可以為相對地址。
varAsync[可選]
布爾型,指定此請求是否為異步方式,默認為true。如果為真,當狀態改變時會調用onreadystatechange屬性指定的回調函數。
bstrUser[可選]
如果服務器需要驗證,此處指定用戶名,如果未指定,當服務器需要驗證時,會彈出驗證窗口。
bstrPassword[可選]
驗證信息中的密碼部分,如果用戶名為空,則此值將被忽略。