1 問題描述: xmlhttp:open方法,請求頁面的時候,更新頁面數(shù)據(jù)后,第2次拿到的結(jié)果還是上次的信息 2 解決辦法: 改用POST方式 3 說明: xmlhttp:open方法 創(chuàng)建一個新的http請求,并指定此請求的方法、URL以及驗(yàn)證信息 語法 oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); 參數(shù) bstrMethod http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。 /***** POST:用"POST"方式發(fā)送數(shù)據(jù),可以大到4MB GET:用"GET"方式發(fā)送數(shù)據(jù),只能256KB 如果請求帶有參數(shù)的化實(shí)用POST方式,POST方式將參數(shù)放置在頁面的隱藏控件內(nèi) 沒有參數(shù)使用GET方式 對于請求的頁面在中途可能發(fā)生更改的,也最好用POST方式 用GET方式可能會拿不到最新的信息 *****/ bstrUrl 請求的URL地址,可以為絕對地址也可以為相對地址。 varAsync[可選] 布爾型,指定此請求是否為異步方式,默認(rèn)為true。如果為真,當(dāng)狀態(tài)改變時會調(diào)用onreadystatechange屬性指定的回調(diào)函 數(shù)。 bstrUser[可選] 如果服務(wù)器需要驗(yàn)證,此處指定用戶名,如果未指定,當(dāng)服務(wù)器需要驗(yàn)證時,會彈出驗(yàn)證窗口。 bstrPassword[可選] 驗(yàn)證信息中的密碼部分,如果用戶名為空,則此值將被忽略。
Example 下面的例子演示從服務(wù)器請求book.xml,并顯示其中的book字段。 var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0"); xmlhttp.open("GET","http://localhost/books.xml", false); 沒有參數(shù)且不會發(fā)生改變的用GET,否則用POST xmlhttp.send(); var book = xmlhttp.responseXML.selectSingleNode("http://book[@id=''''bk101'''']"); alert(book.xml); 備注 調(diào)用此方法后,可以調(diào)用send方法向服務(wù)器發(fā)送數(shù)據(jù)。 調(diào)用頁面 <script language="javascript" type="text/javascript"> function UpdateData() { var ServerUrl = window.location.href; var str = ServerUrl.split("/"); var ServerUrl = "http://"+str[2]; var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); var serverURL=ServerUrl+"/GetTemp.aspx"; xmlhttp.Open("POST",serverURL, false); xmlhttp.Send("adst"); xmlhttp = null; } </script> 處理頁面,得到傳入的數(shù)據(jù) private string GetInput() { System.IO.Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[1024]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, 1024)) > 0) { builder.Append(Encoding.UTF8.GetString(buffer, 0, count)); }
return builder.ToString(); |
|