1 <script type="text/javascript"> 2 window.onload = function () { 3 4 document.getElementById("btn").onclick = function () { 5 6 var username = document.getElementById("uname").value; 7 var password = document.getElementById("pwd").value; 8 var xmh = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 9 xmh.open("post", "/Handler1.ashx?username=" + username + "&password=" + password, true); 10 xmh.onreadystatechange = function () { 11 if (xmh.readyState == 4) { 12 if (xmh.status == 200) { 13 //var x=eval('('+xmh.responseText+')');//把json字符串轉換為json對象 14 //上下兩種方法都行 15 var x = JSON.parse(xmh.responseText);//把json字符串轉換為json對象 16 alert(x.status); 17 } 18 else { 19 alert("出錯"); 20 } 21 } 22 23 }; 24 xmh.send(); 25 } 26 }; 27 </script>
什么是 XMLHttpRequest 對象?
XMLHttpRequest 對象用於在后台與服務器交換數據。
XMLHttpRequest 對象是開發者的夢想,因為您能夠:
- 在不重新加載頁面的情況下更新網頁
- 在頁面已加載后從服務器請求數據
- 在頁面已加載后從服務器接收數據
- 在后台向服務器發送數據
所有現代的瀏覽器都支持 XMLHttpRequest 對象。
在回調函數中處理服務器的響應
onreadystatechange就是回調函數(處理服務器的響應,根據狀態碼)
- 0:請求未初始化(還沒有調用
open()
)。 - 1:請求已經建立,但是還沒有發送(還沒有調用
send()
)。 - 2:請求已發送,正在處理中(通常現在可以從響應中獲取內容頭)。
- 3:請求在處理中;通常響應中已有部分數據可用了,但是服務器還沒有完成響應的生成。
- 4:響應已完成;您可以獲取並使用服務器的響應了。
status這類狀態代碼表明服務器成功地接受了客戶端請求(如果readystatus為4,這只是服務器端完成了響應,但是是否是正確的響應就不知道了)
200 - OK 一切正常,對GET和POST請求的應答文檔跟在后面。