//創建XMLHttp對象 function CreateXmlHttp() { //非IE瀏覽器創建XmlHttpRequest對象 if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { return null; } ... ...
//創建XMLHttp對象 function CreateXmlHttp() { //非IE瀏覽器創建XmlHttpRequest對象 if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { return null; } //IE瀏覽器創建XmlHttpRequest對象 if (window.ActiveXObject) { try { return new ActiveXObject("Microsoft.XMLHTTP"); //較老的IE版本創建 } catch (e) { try { return new ActiveXObject("Msxml2.XMLHTTP"); //較新的IE版本創建 } catch (ex) { return null; } } } }
//調用Ajax
function Send() { var xmlHttp = CreateXmlHttp(); if (!xmlHttp) { alert("創建xmlHttp對象異常"); return false; } var url = "CommonHandler.ashx?t=" + Math.random(); /* method:發送請求所使用的方法(GET或POST);與POST相比,GET更簡單也更快,並且在大部分情況下都能用;然而,在以下情況中,請使用POST請求: •無法使用緩存文件(更新伺服器上的文件或資料庫) •向伺服器發送大量數據(POST 沒有數據量限制) •發送包含未知字元的用戶輸入時,POST 比 GET 更穩定也更可靠 url:規定伺服器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者伺服器腳本文件,比如.aspx,.ashx 和 .php (在傳迴響應之前,能夠在伺服器上執行任務)); async:規定應當對請求進行非同步(true)或同步(false)處理;true是在等待伺服器響應時執行其他腳本,當響應就緒後對響應進行處理;false是等待伺服器響應再執行。 */ xmlHttp.open("post", url, true); //setRequestHeader():POST傳數據時,用來添加 HTTP 頭 // 添加http頭,發送信息至伺服器時內容編碼類型 xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlHttp.send(); //onreadystatechange 每次狀態改變所觸發事件的事件處理程式。 xmlHttp.onreadystatechange = function () { //readyState 對象狀態值 /*0 (未初始化) 對象已建立,但是尚未初始化(尚未調用 open 方法) 1 (初始化) 對象已建立,尚未調用 send 方法 2 (發送數據) send 方法已調用,但是當前的狀態及 http 頭未知 3 (數據傳送中) 已接收部分數據,因為響應及 http 頭不全,這時通過 responseBody 和 responseText 獲取部分數據會出現錯誤, 4 (完成) 數據接收完畢,此時可以通過通過 responseXml 和 responseText 獲取完整的回應數據*/ if (xmlHttp.readyState == 4) { document.getElementById("msg").innerHTML = "數據正在載入中..."; // status值說明 // 200:成功 // 404:沒有發現文件、查詢或URl // 500:伺服器產生內部錯誤 if (xmlHttp.status == 200) { // 這裡可以對返回的內容做處理 // 一般會返回JSON或XML數據格式 document.getElementById("msg").innerHTML = xmlHttp.responseText; } } } }
//頁面html
<body> <input type="button" id="btn" onclick="Send()" value="Send" /> <br /> <div id="msg"> </div> </body>
// 一般處理程式CommonHandler.ashx
<%@ WebHandler Language="C#" Class="CommonHandler" %> using System; using System.Web; public class CommonHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; Random rd = new Random(); context.Response.Write(rd.Next(0, 10000)); } public bool IsReusable { get { return false; } } }