上海嶽城科技一個簡單的Ajax請求例子

來源:互聯網
上載者:User

標籤:編程   重載   包含   情況   本地   使用者   javascrip   pos   onclick   

Ajax不是一種新的程式設計語言,而是一種用於建立更好更快以及互動性更強的Web應用程式的技術。通過Ajax,您可以使用 JavaScript的XMLHttpRequest對象來直接與伺服器進行通訊。您可以在不重載頁面的情況與 Web 服務器交換資料。在本文的例子中,我們將示範當使用者向一個標準的HTML表單中輸入資料時網頁如何與web伺服器進行通訊。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title>一個簡單的Ajax請求例子 - Admin10000.com </title>    <script type="text/javascript">        var xmlHttp;        // 建立XMLHttpRequest對象        function createXMLHttpRequest() {            if (window.ActiveXObject) {                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");            }            else if (window.XMLHttpRequest) {                xmlHttp = new XMLHttpRequest();            }        }        // 整合url參數        function createQueryString() {            var name = document.getElementById("txtName").value;            var sex = document.getElementById("txtSex").value;            var birthday = document.getElementById("txtBirthday").value;            var queryString = "Name=" + encodeURIComponent(name) + "&Sex=" + encodeURIComponent(sex) + "&Birthday=" + encodeURIComponent(birthday);            return queryString;        }        // 按照Get方式傳遞參數        function doRequestUsingGET() {            createXMLHttpRequest();            var queryString = "AjaxServer.ashx?";            queryString = queryString + createQueryString() + "&timeStamp=" + new Date().getTime();            xmlHttp.onreadystatechange = handleStateChange;            xmlHttp.open("GET", queryString, true);            xmlHttp.send(null);        }        // 按POST方式傳遞參數        function doRequestUsingPOST() {            createXMLHttpRequest();            var url = "AjaxServer.ashx?timeStamp=" + new Date().getTime();            var queryString = createQueryString();            xmlHttp.open("POST", url, true);            xmlHttp.onreadystatechange = handleStateChange;            xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");            xmlHttp.send(queryString);        }        // 回呼函數        function handleStateChange() {            if (xmlHttp.readyState == 4) {                if (xmlHttp.status == 200) {                    parseResults();                }            }        }        // 處理伺服器響應內容        function parseResults() {            var responseDiv = document.getElementById("serverResponse");            if (responseDiv.hasChildNodes()) {                responseDiv.removeChild(responseDiv.childNodes[0]);            }            var responseText = document.createTextNode(xmlHttp.responseText);            responseDiv.appendChild(responseText);        }    </script></head><body>    <form action="#">    <h2>輸入你的名字,性別,生日:</h2>    <table>        <tr><td>名字:</td><td><input type="text" id="txtName" /></td></tr>        <tr><td>性別:</td><td><input type="text" id="txtSex" /></td></tr>        <tr><td>生日:</td><td><input type="text" id="txtBirthday" /></td>        </tr>    </table>    <input type="button" value="用Get方式傳參數" onclick="doRequestUsingGET();"/>    <br /><br />    <input type="button" value="用POST方式傳參數" onclick="doRequestUsingPOST();"/>    </form>    <br />    <h3>伺服器響應內容:</h3>    <div id="serverResponse"></div></body></html>

下面來詳細說明下上例的每個JS函數的功能。
createXMLHttpRequest() 用來建立XMLHttpRequest對象。
因為IE把XMLHttpRequest實現為一個ActiveX對象,其他瀏覽器(FF/Safari/Opera)把它實現為一個本地JavaScript對象。由於存在這些差別,JavaScript代碼中必須包含有關的邏輯。
createQueryString() 用來整理參數,將Ajax請求要傳遞的參數整理成一定的格式。
如果傳遞中文或非ASCII字元必須進行URL編碼,本例使用JS的encodeURIComponent()函數進行參數URL編碼。
doRequestUsingGET() 以HTTP GET方式向伺服器發送請求,並且傳遞參數。
XMLHttpRequest對象的open()方法會指定將發出的請求。open()方法取3個參數:一個是指示所使用的方法(通常是GET或POST)的串;一個是表示目標資源URL的串;一個是Boolean值,只是請求是否是非同步。
GET請求時,將傳遞的參數寫到open方法的url參數中,此時send方法的參數為null。
在某些情況下,有些瀏覽器會把多個XMLHttpRequest請求的結果緩衝在同一個URL。如果對每個請求的響應不同,這就會帶來不好的結果,把目前時間戳追加到URL的最後,就能確保URL的惟一性,從而避免瀏覽器緩衝結果。
本例伺服器端代碼使用的是asp.net(c#)。
doRequestUsingPOST() 以HTTP POST方式向伺服器發送請求,並且傳遞參數。 
確保open()中指定的方法是POST,需要設定Content-Type頭資訊,類比HTTP POST方法發送一個表單,這樣伺服器才會知道如何處理上傳的內容。設定頭資訊前必須先調用open方法。
必須使用send方法傳遞參數。參數的提交格式和GET方法中url的寫法一樣。
handleStateChange()  Ajax回呼函數。
對於XMLHttpRequest對象,onreadystatechange屬性儲存區了回呼函數的指標。當XMLHttpRequest對象內部狀態發生變化時,就會調用這個回呼函數。
parseResults() 處理響應結果。

上海嶽城科技一個簡單的Ajax請求例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.