婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)

零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)

熱門標(biāo)簽:科智聯(lián)智能電銷機(jī)器人 徐州電銷卡外呼系統(tǒng)供應(yīng)商 上海浦東百度地圖標(biāo)注中心注冊(cè) 老虎郵局地圖標(biāo)注點(diǎn) 外呼系統(tǒng)獲取客戶手機(jī)號(hào) 襄陽(yáng)外呼系統(tǒng)接口 百靈鳥(niǎo) 目標(biāo)三維地圖標(biāo)注 青海醫(yī)療智能外呼系統(tǒng)怎么樣

本節(jié)簡(jiǎn)介(異步鏈接服務(wù)器對(duì)象)XMLHTTPRequest以及AJAX的簡(jiǎn)介。

AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML)。 AJAX有四個(gè)方面的好處:1.即減輕了服務(wù)器的負(fù)擔(dān)。2帶來(lái)了更好的用戶體驗(yàn)。3.基于標(biāo)準(zhǔn)被廣泛的支持。4.擁有更好的頁(yè)面呈現(xiàn)和數(shù)據(jù)分離。

技術(shù)名稱 技術(shù)說(shuō)明
javascript javascript是通用的腳本語(yǔ)言,AJAX是用javascript編寫(xiě)的
css 用戶界面的樣式通過(guò)css來(lái)修改
DOM DOM通過(guò)javascript修改DOM,ajax可以在運(yùn)行時(shí)改變用戶界面,或者局部更新頁(yè)面中的某個(gè)節(jié)點(diǎn)。
XMLHttpRequest XMLHttpRequest對(duì)象 XMLHttpRequest對(duì)象允許web程序員從web服務(wù)器以后臺(tái)的方式獲取數(shù)據(jù)。數(shù)據(jù)的個(gè)數(shù)通常是XML或者是文本。

從上面我們看出,javascript就想膠水一樣將各個(gè)部分粘貼在一起,例如通過(guò)javascript操作BOM改變刷新用戶界面,通過(guò)修改className來(lái)改變css樣式風(fēng)格

1.異步對(duì)象連接服務(wù)器

不嚴(yán)謹(jǐn)?shù)恼f(shuō),ajax是一個(gè)簡(jiǎn)單的多線程,它能夠是用戶在前臺(tái)多種操作而不間斷。ajax異步交互在后臺(tái)默默的工作著 在web中異步訪問(wèn)是通過(guò)XMLHttpRequest對(duì)象來(lái)實(shí)現(xiàn)的,該對(duì)象最早是在ie5被作為activeX控件引入的。隨后各個(gè)瀏覽器紛紛支持該異步對(duì)象,首先必須創(chuàng)建對(duì)象。代碼如下:

復(fù)制代碼 代碼如下:

    var xmlHttp;
            function createXMLHrrpRequest() {
                if (window.ActiveXObject)
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                else if (window.XMLHttpRequest)
                    xmlHttp = new XMLHttpRequest();
            }

該對(duì)象是先創(chuàng)建了一個(gè)全局變量xmlHttp,留以后函數(shù)中使用。另外創(chuàng)建異步對(duì)象函數(shù)createXMLHrrpRequest()

該過(guò)程用到了if語(yǔ)句方法,如果是IE采用window.ActiveXobject方法,如果不是,則用XMLHttpRequest方法創(chuàng)建函數(shù)。

 在創(chuàng)建完異步對(duì)象后,自然是使用該對(duì)象連接服務(wù)器,該對(duì)象有一系列十分有用的屬性和方法。

屬性/方法 說(shuō)明
abort() 取消請(qǐng)求
getAllResponseHeaders() 獲取指定的Http頭
open(method,url) 創(chuàng)建請(qǐng)求,method指定請(qǐng)求類型,GET POST
send() 發(fā)送請(qǐng)求
setRequestHeader() 指定請(qǐng)求的http頭
onreadystatechange 發(fā)生任何狀態(tài)變化時(shí)的事件控制對(duì)象
readyState 

請(qǐng)求的狀態(tài)

0為尚未初始化

1為正在發(fā)送請(qǐng)求

2為請(qǐng)求完成

3為請(qǐng)求成功,正接收數(shù)據(jù)。

4為接收數(shù)據(jù)成功

responseText 服務(wù)器返回文本
responseXML 服務(wù)器返回xml
status 
服務(wù)器返回的http請(qǐng)求響應(yīng)值,常用的有

200表示請(qǐng)求成功

202表示請(qǐng)求被接收,但處理未完成

400表示錯(cuò)誤的請(qǐng)求

404表示資源未找到

500表示內(nèi)部服務(wù)器錯(cuò)誤,如aspx代碼錯(cuò)誤

創(chuàng)建完XMLHttpRequest對(duì)象后首先利用open()方法建立一個(gè)請(qǐng)求,并向服務(wù)器發(fā)送,該方法的完整表示式如下:

open(methond,url,asynchronous,user,password)
其中,method表示請(qǐng)求的類型,通長(zhǎng)為GET,POST。

url即請(qǐng)求的地址,可以是絕對(duì)地址,也可以是相對(duì)地址。

asynchronous是一個(gè)布爾值,表示是否為異步請(qǐng)求,默認(rèn)值為異步請(qǐng)求true。

user、password分別為可選的用戶名、密碼。

創(chuàng)建了異步對(duì)象后,要建立一個(gè)到服務(wù)器的請(qǐng)求可使用如下代碼:

xmlHttp.open("GET","1-1.aspx",true);
以上代碼用get方法請(qǐng)求的相對(duì)地址為9-1.aspx的頁(yè)面,方式是異步的。在發(fā)出了請(qǐng)求后便需要請(qǐng)求的狀態(tài)readyState屬性來(lái)判斷請(qǐng)求的情況,如果該屬性變化了,就會(huì)觸發(fā)onreadystatechange事件,因此通常的代碼如下:

復(fù)制代碼 代碼如下:

script type="text/javascript">
            xmlHttp.onRecorderStateChange = function(){
                if(xmlHttp.readyState == 4)
                //執(zhí)行相關(guān)代碼
            }
        /script>

也就是直接編寫(xiě)onRecorderStateChange的事件函數(shù),如果readyState的狀態(tài)為4(數(shù)據(jù)接收成功)則繼續(xù)操作。但是通常情況下,不但需要判斷請(qǐng)求的狀態(tài),還要判斷服務(wù)器返回的狀態(tài)status,因此上述代碼改為

復(fù)制代碼 代碼如下:

script type="text/javascript">
            xmlHttp.onRecorderStateChange = function(){
                if(xmlHttp.readyState == 4 xmlHttp.status==200)
                //執(zhí)行相關(guān)代碼
            }
        /script>

以上兩段代碼僅僅只是建立了請(qǐng)求,還需要使用send()方法來(lái)發(fā)送請(qǐng)求,該方法的原型如下:

send(body);
改方法僅有一個(gè)參數(shù)body,它表示要向服務(wù)器發(fā)送的數(shù)據(jù),其格式為查詢字符串的形式,例如:

var body = "myName=isaacage=25";
如果再open中指定的是get方式,則這些參數(shù)作為查詢字符串提交,如果指定的是post方式,則作為HTTP的POST方法提交。對(duì)于send()而言。body參數(shù)是必須的,如果不發(fā)送任何數(shù)據(jù),則可以使用

xmlHttp.send(null)
特別的,如果使用POST方法進(jìn)行提交請(qǐng)求,那么在發(fā)送之前必須使用以下語(yǔ)句來(lái)設(shè)置HTTP的頭,語(yǔ)法如下:

xmlHttp.setRequestHeader("content-Type","application/x-www-form-urlencoded;")
服務(wù)器在收到客戶端請(qǐng)求之后,根據(jù)請(qǐng)求返回相應(yīng)的結(jié)果,這個(gè)結(jié)果通常為兩種形式,一種是文本形式,存儲(chǔ)在responseText中;另一種是XML格式,存儲(chǔ)在responseXML中。客戶端程序可以對(duì)前者進(jìn)行字符串的處理,對(duì)后者進(jìn)行DOM相關(guān)的處理,例如可以對(duì)服務(wù)器返回值做如下的處理:

alert("服務(wù)器返回:"+xmlHttp.responseText);
上述整個(gè)異步連接服務(wù)器的過(guò)程如下:

復(fù)制代碼 代碼如下:

    body>
        script type="text/javascript">
            var xmlHttp;
            function createXMLHttpRequest() {
                if (window.ActiveXObject)
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                else if (window.XMLHttpRequest)
                    xmlHttp = new XMLHttpRequest();
            }
            function startRequest() {
                createXMLHttpRequest();
                xmlHttp.open("GET", "http://study.ahthw.com/ajaxresponse/1-1.aspx", true);
                xmlHttp.onreadystatechange = function() {
                    if (xmlHttp.readyState == 4 xmlHttp.status == 200)
                        alert("服務(wù)器返回: " + xmlHttp.responseText);
                }
                xmlHttp.send(null);
            }
        /script>
        input type="button" value="測(cè)試異步通訊" onClick="startRequest()">
    /body>

為了解決異步連接ie緩存問(wèn)題,需要在真實(shí)地址加一個(gè)與時(shí)間毫秒相關(guān)的參數(shù),使得每次請(qǐng)求的地址都不一樣。而該參數(shù)服務(wù)器確是不需要的。

復(fù)制代碼 代碼如下:

var sUrl = "1-1.aspx?"+new Date().getTime();//地址不斷變化
        XMLHttp.open("GET",sUrl,true);

2.GET和POST模式

上面的實(shí)例中,除了請(qǐng)求異步服務(wù)器以外,并沒(méi)有向服務(wù)器發(fā)送額外的數(shù)據(jù),通常在html請(qǐng)求中有g(shù)et和post模式,這兩種模式都可以作為異步請(qǐng)求發(fā)送數(shù)據(jù)的方式。

如果是GET請(qǐng)求,則直接把數(shù)據(jù)放入異步請(qǐng)求的URL地址中,而send方法不發(fā)送任何數(shù)據(jù),例如:

復(fù)制代碼 代碼如下:

    var queryString = "firstName=isaacbirthday=0226";
            var sUrl = "1-1.aspx?" + queryString + "timestamp" + new Date().getTime();
            xmlHttp.open("GET", sUrl);
            xmlHttp.send(null); //該語(yǔ)句只發(fā)送null

如果是POST模式,則是把數(shù)據(jù)統(tǒng)一在send()方法中送出,請(qǐng)求地址沒(méi)有任何信息,并且必須設(shè)置請(qǐng)求的文件頭,例如:

復(fù)制代碼 代碼如下:

script language="javascript">
            var queryString = "firstName=isaacbirthday=0226";
            var sUrl = "1-1.aspx?" + queryString + "timestamp" + new Date().getTime();
            xmlHttp.open("POST", sUrl);
            xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            xmlHttp.send(queryString); //該語(yǔ)句負(fù)責(zé)發(fā)送數(shù)據(jù)
        /script>

實(shí)例

為了更清楚地演示GET和POST的區(qū)別,編寫(xiě)示例代碼,首先創(chuàng)建兩個(gè)文本框用于輸入用戶姓名和生日,并建立兩個(gè)按鈕分別用于GET和POST兩個(gè)方法來(lái)發(fā)送異步請(qǐng)求

復(fù)制代碼 代碼如下:

form>
            p>input type="text" id="firstName"/>/p>
            p>input type="text" id="birthday" />/p>
        /form>
        input type="button" value="GET" onClick="doRequestUsingGET()">
        input type="button" value="POST" onClick="doRequestUsingPOST()">

其中用戶填寫(xiě)的數(shù)據(jù)統(tǒng)一用函數(shù)createQueryString()編寫(xiě),需要時(shí)予以調(diào)運(yùn),代碼如下

復(fù)制代碼 代碼如下:

function crrateQueryString() {
                var firstName = document.getElementById("firstName").value;
                var birthday = document.getElementById("birthday").value;
                var queryString = "firstName=" + firstName + "birthday=" + birthday;
                return queryString;
            }

服務(wù)器接收到請(qǐng)求數(shù)據(jù)后根據(jù)不同的時(shí)刻返回相應(yīng)的文本,客戶端接收到文本后顯示在相應(yīng)的div快中,代碼如下

復(fù)制代碼 代碼如下:

    function handleStateChange() {
                if (xmlHttp.readyState == 4 xmlHttp.state == 200) {
                    var responseDiv = document.getElementById("serverResponse");
                    responseDiv.innerHTML = xmlHttp.responseText;
                }
            }

GET和POST各建立自己的函數(shù)doRequestUsingGET()和doRequestUsingPOST()。

完整代碼如下:

復(fù)制代碼 代碼如下:

script type="text/javascript">
            var xmlHttp;
            function createXMLHttpRequest() {
                if (window.ActiveXObject)
                    xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
                else if (window.XMLHttpRequest)
                    xmlHttp = new XMLHttpRequest();
            }
            function createQueryString() {
                var firstName = document.getElementById("firstName").value;
                var birthday = document.getElementById("birthday").value;
                var queryString = "firstName=" + firstName + "birthday=" + birthday;
                return encodeURI(encodeURI(queryString)); //兩次編碼解決中文亂碼問(wèn)題
            }
            function doRequestUsingGET() {
                createXMLHttpRequest();
                var queryString = "1-3.aspx?";
                queryString += createQueryString() + "timestamp=" + new Date().getTime();
                xmlHttp.onreadystatechange = handleStateChange;
                xmlHttp.open("GET", queryString);
                xmlHttp.send(null);
            }
            function doRequestUsingPOST() {
                createXMLHttpRequest();
                var url = "1-3.aspx?timestamp=" + new Date().getTime();
                var queryString = createQueryString();
                xmlHttp.open("POST", url);
                xmlHttp.onreadystatechange = handleStateChange;
                xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xmlHttp.send(queryString);
            }
            function handleStateChange() {
                if (xmlHttp.readyState == 4 xmlHttp.status == 200) {
                    var responseDiv = document.getElementById("serverResponse");
                    responseDiv.innerHTML = decodeURI(xmlHttp.responseText); //解碼
                }
            }
        /script>
        form>
            input type="text" id="firstName" />
            br>
            input type="text" id="birthday" />
        /form>
        form>
            input type="button" value="GET" onclick="doRequestUsingGET();" />
            br>
            input type="button" value="POST" onclick="doRequestUsingPOST();" />
        /form>
        div id="serverResponse">/div>

服務(wù)器端主要是根據(jù)用戶輸入以及請(qǐng)求的類型返回不同的字符串

復(fù)制代碼 代碼如下:

%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
%@ Import Namespace="System.Data" %>
%
    if(Request.HttpMethod == "POST")
        Response.Write("POST: " + Request["firstName"] + ", your birthday is " + Request["birthday"]);
    else if(Request.HttpMethod == "GET")
        Response.Write("GET: " + Request["firstName"] + ", your birthday is " + Request["birthday"]);
%>

從以上代碼看出POST和GET都發(fā)送了數(shù)據(jù)異步請(qǐng)求,通常在數(shù)據(jù)不多的時(shí)候使用GET,在數(shù)據(jù)較多的時(shí)候使用POST。

在使用PSOT發(fā)送中文字符時(shí),post接收會(huì)亂碼,使用GET發(fā)送中文字符正常。這是因?yàn)楫惒綄?duì)象xmlHttp在處理返回的responseText的時(shí)候,是按照UTF-8編碼的。
通常的解決辦法是escape()對(duì)發(fā)送的數(shù)據(jù)進(jìn)行編碼,然后在返回的responseText再使用unescape()進(jìn)行解碼。然而在javascript編程中通常不推薦escape()和unescape()。而推薦使用encodeURI()和decodeURI()。這里要正常運(yùn)行,必須對(duì)發(fā)送的數(shù)據(jù)進(jìn)行兩次encodeURI()編碼。
代碼如下

復(fù)制代碼 代碼如下:

    function createQueryString(){
        var firstName =document.getElementById("firstName").value;
        var birthday =document.getElementById("birthday").value;
        var queryString = "firstName="+firstName +"birthday="+birthday;
        return encodeURI(encodeURI(queryString)); //兩次編碼解決中文亂碼問(wèn)題
    }

而且在返回?cái)?shù)據(jù)responeText時(shí)再進(jìn)行一次解碼,代碼如下

復(fù)制代碼 代碼如下:

function handleStateChange(){
            if(xmlHttp.readyState==4xmlHttp.status ==200){
                var responeDiv =document.getElementById(serverResponse);
                responeDiv.innerHTML = decodeURI(XMLHttp.responseText);//編碼
            }
        }

這樣POST模式下也能使用中文了。

3.服務(wù)器返回xml

XML是一種可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language),它是一種可自定義標(biāo)記的語(yǔ)言,用來(lái)克服html局限,按照實(shí)際功能來(lái)看,xml主要用于數(shù)據(jù)存儲(chǔ)。

在ajax中,服務(wù)器如果返回XML,可通過(guò)異步對(duì)象的responseXML屬性來(lái)獲取,開(kāi)發(fā)者可以利用DOM的作用方法進(jìn)行處理。

假設(shè)服務(wù)器返回

復(fù)制代碼 代碼如下:

?xml version="1.0" encoding="gb2312"?>
list>
    caption>Member List/caption>
    member>
        name>isaac/name>
        class>W13/class>
        birth>Jun 24th/birth>
        constell>Cancer/constell>
        mobile>1118159/mobile>
    /member>
    member>
        name>fresheggs/name>
        class>W610/class>
        birth>Nov 5th/birth>
        constell>Scorpio/constell>
        mobile>1038818/mobile>
    /member>
    member>
        name>girlwing/name>
        class>W210/class>
        birth>Sep 16th/birth>
        constell>Virgo/constell>
        mobile>1307994/mobile>
    /member>
    member>
        name>tastestory/name>
        class>W15/class>
        birth>Nov 29th/birth>
        constell>Sagittarius/constell>
        mobile>1095245/mobile>
    /member>
    member>
        name>lovehate/name>
        class>W47/class>
        birth>Sep 5th/birth>
        constell>Virgo/constell>
        mobile>6098017/mobile>
    /member>
    member>
        name>slepox/name>
        class>W19/class>
        birth>Nov 18th/birth>
        constell>Scorpio/constell>
        mobile>0658635/mobile>
    /member>
    member>
        name>smartlau/name>
        class>W19/class>
        birth>Dec 30th/birth>
        constell>Capricorn/constell>
        mobile>0006621/mobile>
    /member>
    member>
        name>tuonene/name>
        class>W210/class>
        birth>Nov 26th/birth>
        constell>Sagittarius/constell>
        mobile>0091704/mobile>
    /member>
    member>
        name>dovecho/name>
        class>W19/class>
        birth>Dec 9th/birth>
        constell>Sagittarius/constell>
        mobile>1892013/mobile>
    /member>
    member>
        name>shanghen/name>
        class>W42/class>
        birth>May 24th/birth>
        constell>Gemini/constell>
        mobile>1544254/mobile>
    /member>
    member>
        name>venessawj/name>
        class>W45/class>
        birth>Apr 1st/birth>
        constell>Aries/constell>
        mobile>1523753/mobile>
    /member>
    member>
        name>lightyear/name>
        class>W311/class>
        birth>Mar 23th/birth>
        constell>Aries/constell>
        mobile>1002908/mobile>
    /member>
/list>

下面利用異步對(duì)象獲取該XML,并將所有的項(xiàng)都羅列在表格中,初始化對(duì)象的方法與獲取文本完全相同,代碼如下:

復(fù)制代碼 代碼如下:

    var xmlHttp;

            function createXMLHttpRequest() {
                if (window.ActiveXObject)
                    xmlHttp = new ActiveXObject("Mincrosoft,XMLHttp");
                else if (window.XMLHttpRequest)
                    xmlHttp = new XMLHttpRequest();
            }

當(dāng)用戶單擊按鈕時(shí)發(fā)生異步請(qǐng)求,并獲取responseXML對(duì)象,代碼如下

復(fù)制代碼 代碼如下:

    function getXML(addressXML) {
                var sUrl = addressXML + "?timestamp=" + new Date();
                createXMLHttpRequest();
                xmlHttp.onRecorderStateChange = handleStateChange;
                xmlHttp.open("GET", url);
                xml.send(null);
            }

            function handleStateChange() {
                if (xmHttp, readyState == 4 xmlHttp.status == 200)
                DrawTable(xmlHttp.responseXML); //responseXML獲取到xml文檔
            }

其中DrawTable()為后勤處理XML的函數(shù),將服務(wù)器返回的XML對(duì)象responseXML直接作為參數(shù)傳遞,HTML部分如下:

復(fù)制代碼 代碼如下:

    input type="button" value="獲取XML" onclick="getXML('1-4.xml');">br>br>
table class="datalist" summary="list of members in EE Studay" id="member">
    tr>
        th scope="col">Name/th>
        th scope="col">Class/th>
        th scope="col">Birthday/th>
        th scope="col">Constellation/th>
        th scope="col">Mobile/th>
    /tr>
/table>

當(dāng)用戶單擊按鈕時(shí)出發(fā)getXML(),并將xml地址1-4.xml作為參數(shù)傳入

而函數(shù)DrawTable()的任務(wù)就是把XML中的數(shù)據(jù)拆分,并重新組裝到表格"member"中,代碼如下:可以看到處理XML的方法與DOM處理HTML完全相同

復(fù)制代碼 代碼如下:

    function DrawTable(myXML) {
                //用DOM方法操作XML文檔
                var oMembers = myXML.getElementsByTagName("member");
                var oMember = "",
                    sName = "",
                    sClass = "",
                    sBirth = "",
                    sConstell = "",
                    sMobile = "";
                for (var i = 0; i oMembers.length; i++) {
                    oMember = oMembers[i];
                    sName = oMember.getElementsByTagName("name")[0].firstChild.nodeValue;
                    sClass = oMember.getElementsByTagName("class")[0].firstChild.nodeValue;
                    sBirth = oMember.getElementsByTagName("birth")[0].firstChild.nodeValue;
                    sConstell = oMember.getElementsByTagName("constell")[0].firstChild.nodeValue;
                    sMobile = oMember.getElementsByTagName("mobile")[0].firstChild.nodeValue;
                    //添加一行
                    addTableRow(sName, sClass, sBirth, sConstell, sMobile);
                }
            }

其中addTableRow()函數(shù)將拆分出來(lái)的每一組XML數(shù)據(jù)組裝成表格table>的一行,添加到頁(yè)面中。代碼如下:

復(fù)制代碼 代碼如下:

    function addTableRow(sName, sClass, sBirth, sConstell, sMobile) {
                //表格添加一行的相關(guān)操作
                var oTable = document.getElementById("member");
                var oTr = oTable.insertRow(oTable.rows.length);
                var aText = new Array();
                aText[0] = document.createTextNode(sName);
                aText[1] = document.createTextNode(sClass);
                aText[2] = document.createTextNode(sBirth);
                aText[3] = document.createTextNode(sConstell);
                aText[4] = document.createTextNode(sMobile);
                for (var i = 0; i aText.length; i++) {
                    var oTd = oTr.insertCell(i);
                    oTd.appendChild(aText[i]);
                }
            }

網(wǎng)站中實(shí)際返回xml的工作通常是由asp.net jsp php等服務(wù)器腳本動(dòng)態(tài)生成的,換句話說(shuō),xmlHttp.open()中的URL地址仍然.aspx等動(dòng)態(tài)頁(yè)面的后綴,它們返回的XML是用戶請(qǐng)求生成的。


4.處理多個(gè)異步請(qǐng)求

而實(shí)際頁(yè)面中往往不止一個(gè)異步請(qǐng)求,比如在一個(gè)表單中,很多單元格都需要發(fā)生異步請(qǐng)求來(lái)驗(yàn)證,再加上網(wǎng)速的影響,第一個(gè)異步請(qǐng)求尚未完成,很可能就已經(jīng)被第2個(gè)請(qǐng)求覆蓋。

頁(yè)面內(nèi)容不做多介紹,我們發(fā)現(xiàn),發(fā)送的第一個(gè)請(qǐng)求沒(méi)有響應(yīng),因?yàn)樗坏诙€(gè)請(qǐng)求覆蓋了。

通常解決的辦法是將xmlHttp對(duì)象作為局部變量來(lái)處理,并且在收到服務(wù)器返回值后手動(dòng)將其刪除。如下所示:

復(fù)制代碼 代碼如下:

        function getData(oServer, oText, oSpan) {
                var xmlHttp; //處理為局部變量
                if (window.ActiveXObject)
                    xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
                else if (window.XMLHttpRequest)
                    xmlHttp = new XMLHttpRequest();
                var queryString = oServer + "?";
                queryString += createQueryString(oText) + "timestamp=" + new Date().getTime();
                xmlHttp.onreadystatechange = function() {
                    if (xmlHttp.readyState == 4 xmlHttp.status == 200) {
                        var responseSpan = document.getElementById(oSpan);
                        responseSpan.innerHTML = xmlHttp.responseText;
                        delete xmlHttp; //收到返回結(jié)構(gòu)后手動(dòng)刪除
                        xmlHttp = null;
                    }
                }
                xmlHttp.open("GET", queryString);
                xmlHttp.send(null);
            }

以上就是本文的全部?jī)?nèi)容了,雖然有點(diǎn)長(zhǎng),但是還是希望小伙伴們能夠好好的讀一讀,這對(duì)于學(xué)好ajax非常重要,希望大家能夠喜歡。

您可能感興趣的文章:
  • Javascript 基礎(chǔ)---Ajax入門必看
  • 使用jQuery處理AJAX請(qǐng)求的基礎(chǔ)學(xué)習(xí)教程
  • Jquery ajax基礎(chǔ)教程
  • ajax跨域(基礎(chǔ)域名相同)表單提交的方法
  • JQuery的ajax基礎(chǔ)上的超強(qiáng)GridView展示
  • ajax 入門基礎(chǔ)之 XMLHttpRequest對(duì)象總結(jié)
  • Ajax+PHP簡(jiǎn)單基礎(chǔ)入門實(shí)例教程
  • AJAX技術(shù)基礎(chǔ)介紹
  • Ajax.基礎(chǔ)教程 電子書(shū)版 提供下載
  • Ajax基礎(chǔ)知識(shí)詳解

標(biāo)簽:紅河 股票 辛集 佛山 商洛 咸寧 揭陽(yáng) 荊州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)》,本文關(guān)鍵詞  零,基礎(chǔ),學(xué)習(xí),AJAX,之,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产乱码字幕精品高清av | gogogo免费视频观看亚洲一| 丝袜美腿亚洲综合| 午夜视频一区二区三区| 亚洲国产成人va在线观看天堂| 一区二区三区四区乱视频| 夜夜嗨av一区二区三区中文字幕| 一区二区三区在线免费观看| 一区二区三区av电影| 亚洲成a人在线观看| 日韩激情中文字幕| 国产美女精品人人做人人爽| 国产福利一区二区三区视频在线| 国产精品1024| 暴力调教一区二区三区| 91免费版在线| 91精品国产综合久久久久久漫画| 日韩女优毛片在线| 欧美激情在线一区二区三区| 一卡二卡三卡日韩欧美| 免费观看在线色综合| 国产精品1区2区3区在线观看| 91在线观看成人| 制服丝袜av成人在线看| 中文字幕av一区二区三区高| 亚洲特黄一级片| 美女视频黄a大片欧美| 国产剧情一区二区三区| 日本韩国视频一区二区| 日韩精品一区二区三区四区 | 一本色道久久综合亚洲aⅴ蜜桃 | 一区二区国产盗摄色噜噜| 日韩影院精彩在线| 国产mv日韩mv欧美| 91精选在线观看| 国产精品免费看片| 日本三级亚洲精品| 成人精品高清在线| 欧美一卡二卡三卡| 亚洲码国产岛国毛片在线| 秋霞午夜鲁丝一区二区老狼| 99精品一区二区三区| 日韩欧美国产一区在线观看| 亚洲欧美日韩在线| 东方欧美亚洲色图在线| 日韩写真欧美这视频| 一个色综合av| 一本大道久久a久久综合| 久久久国产精华| 蜜桃一区二区三区在线| 欧美日韩综合不卡| ●精品国产综合乱码久久久久| 国产一区高清在线| 日韩欧美色综合| 偷窥少妇高潮呻吟av久久免费| 色猫猫国产区一区二在线视频| 国产精品久久久久影院色老大| 激情综合网天天干| 日韩精品在线一区二区| 爽好多水快深点欧美视频| 欧美性猛交xxxx乱大交退制版 | 亚洲第一av色| 欧美亚洲动漫制服丝袜| 国产精品素人一区二区| 国产精品99久久久久久宅男| 欧美tickle裸体挠脚心vk| 日本成人在线视频网站| 91精品国产日韩91久久久久久| 午夜视黄欧洲亚洲| 欧美精品xxxxbbbb| 日韩精品久久久久久| 91精品国产一区二区| 天堂一区二区在线| 日韩午夜激情电影| 精品一区二区久久久| 精品免费视频.| 国产精品一区二区在线看| 国产欧美日韩另类一区| 国产精品99久久久久久久vr| 久久精品亚洲精品国产欧美| 国产精品99久久久久| 日韩美女一区二区三区| 国产一区二区在线视频| 2022国产精品视频| 成人免费高清在线| 亚洲最大成人网4388xx| 日韩午夜精品视频| 精品写真视频在线观看 | 日韩一区精品视频| 日韩一级成人av| 国产精品77777竹菊影视小说| 久久久影视传媒| 一本色道亚洲精品aⅴ| 三级精品在线观看| 26uuu精品一区二区三区四区在线| 国产成人精品www牛牛影视| 中文字幕一区二区日韩精品绯色| 欧美在线一区二区| 国产在线精品不卡| 亚洲综合小说图片| 2021中文字幕一区亚洲| 欧洲国内综合视频| 国产精品一线二线三线精华| 亚洲男人天堂一区| 日韩亚洲欧美综合| 99国产精品久久久久久久久久 | 欧美大片在线观看| 91麻豆免费视频| 国产在线麻豆精品观看| 亚洲天堂2016| 久久久久久久一区| 欧美亚洲国产一区二区三区va| 国产精品一区二区无线| 天天色 色综合| 亚洲视频一区二区免费在线观看| 欧美电视剧在线观看完整版| 91香蕉视频污| 国产v综合v亚洲欧| 经典三级视频一区| 日韩黄色小视频| 亚洲特级片在线| 日本一二三不卡| 日韩精品综合一本久道在线视频| 色国产精品一区在线观看| 国产另类ts人妖一区二区| 五月婷婷久久丁香| 亚洲一区影音先锋| 国产精品国产精品国产专区不蜜 | 亚洲午夜视频在线| 国产精品护士白丝一区av| 日韩欧美一级二级| 欧美老女人第四色| 欧美日韩中文另类| 在线亚洲人成电影网站色www| 成人高清免费观看| 国产精品影视在线| 韩国女主播一区二区三区| 天堂在线亚洲视频| 天堂影院一区二区| 日日骚欧美日韩| 青青草原综合久久大伊人精品优势 | 欧美一区二区三区的| 色婷婷一区二区三区四区| 成人激情免费电影网址| 国产精品系列在线播放| 九九热在线视频观看这里只有精品| 天堂在线亚洲视频| 美国一区二区三区在线播放| 日韩极品在线观看| 老司机午夜精品| 国内精品国产成人国产三级粉色| 国内精品伊人久久久久av一坑| 韩国成人福利片在线播放| 久久精品国产久精国产爱| 久久97超碰色| 成人综合婷婷国产精品久久 | 6080国产精品一区二区| 欧美一二三四在线| 久久蜜桃一区二区| 国产亚洲欧美激情| 国产精品视频第一区| √…a在线天堂一区| 亚洲女人的天堂| 日韩成人av影视| 国产专区综合网| 97久久久精品综合88久久| 欧美性大战久久| 欧美精品一区二区不卡| 中文字幕中文字幕中文字幕亚洲无线 | 欧美一区二区视频在线观看| 精品久久久久香蕉网| 国产精品三级电影| 亚洲电影第三页| 精品在线播放午夜| 一本色道久久综合亚洲精品按摩| 欧美日韩精品久久久| 欧美一区二区视频在线观看2022| 久久久久成人黄色影片| 亚洲美女视频一区| 国内一区二区视频| 欧美伊人久久大香线蕉综合69| 精品日韩在线一区| 中文字幕日韩精品一区| 青青草97国产精品免费观看| 成人性色生活片| 91精品国产一区二区| 亚洲视频每日更新| 久久9热精品视频| 91精品1区2区| 国产拍欧美日韩视频二区| 亚洲国产日韩av| 国产69精品久久久久777| 欧美日韩在线播放一区| 久久久99精品免费观看不卡| 午夜免费欧美电影| 91麻豆免费观看| 国产女同互慰高潮91漫画| 天堂成人免费av电影一区| a级精品国产片在线观看| 精品国产一区a|