欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Drunk Dream-AJAX基礎教程

AJAX基礎教程

  這篇文章將帶您瀏覽整個(gè)AJAX的基本概貌,并展示兩個(gè)簡(jiǎn)單的例子讓您輕松上路.

  什么是 AJAX?
  AJAX (異步 JavaScript 和 XML) 是個(gè)新產(chǎn)生的術(shù)語(yǔ),專(zhuān)為描述JavaScript的兩項強大性能.這兩項性能在多年來(lái)一直被網(wǎng)絡(luò )開(kāi)發(fā)者所忽略,直到最近Gmail, Google suggest和google Maps的橫空出世才使人們開(kāi)始意識到其重要性.

  這兩項被忽視的性能是:
  無(wú)需重新裝載整個(gè)頁(yè)面便能向服務(wù)器發(fā)送請求.
  對XML文檔的解析和處理.

步驟 1 – "請!" --- 如何發(fā)送一個(gè)HTTP請求

  為了用JavaScript向服務(wù)器發(fā)送一個(gè)HTTP請求, 需要一個(gè)具備這種功能的類(lèi)實(shí)例. 這樣的類(lèi)首先由Internet Explorer以ActiveX對象引入, 被稱(chēng)為XMLHTTP. 后來(lái)Mozilla, Safari 和其他瀏覽器紛紛仿效, 提供了XMLHttpRequest類(lèi),它支持微軟的ActiveX對象所提供的方法和屬性.

  因此, 為了創(chuàng )建一個(gè)跨瀏覽器的這樣的類(lèi)實(shí)例(對象), 可以應用如下代碼:

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
}

  (上例對代碼做了一定簡(jiǎn)化,這是為了解釋如何創(chuàng )建XMLHTTP類(lèi)實(shí)例. 實(shí)際的代碼實(shí)例可參閱本篇步驟3.)

  如果服務(wù)器的響應沒(méi)有XML mime-type header,某些Mozilla瀏覽器可能無(wú)法正常工作. 為了解決這個(gè)問(wèn)題, 如果服務(wù)器響應的header不是text/xml,可以調用其它方法修改該header.

http_request = new XMLHttpRequest();
http_request.overrideMimeType(‘text/xml‘);

  接下來(lái)要決定當收到服務(wù)器的響應后,需要做什么.這需要告訴HTTP請求對象用哪一個(gè)JavaScript函數處理這個(gè)響應.可以將對象的onreadystatechange屬性設置為要使用的JavaScript的函數名,如下所示:

http_request.onreadystatechange = nameOfTheFunction;

  注意:在函數名后沒(méi)有括號,也無(wú)需傳遞參數.另外還有一種方法,可以在扉頁(yè)(fly)中定義函數及其對響應要采取的行為,如下所示:

http_request.onreadystatechange = function(){
    // do the thing
};

  在定義了如何處理響應后,就要發(fā)送請求了.可以調用HTTP請求類(lèi)的open()和send()方法, 如下所示:

http_request.open(‘GET‘, ‘http://www.example.org/some.file‘, true);
http_request.send(null);

  open()的第一個(gè)參數是HTTP請求方式 – GET, POST, HEAD 或任何服務(wù)器所支持的您想調用的方式. 按照HTTP規范,該參數要大寫(xiě);否則,某些瀏覽器(如Firefox)可能無(wú)法處理請求.有關(guān)HTTP請求方法的詳細信息可參考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs
  第二個(gè)參數是請求頁(yè)面的URL.由于自身安全特性的限制,該頁(yè)面不能為第三方域名的頁(yè)面.同時(shí)一定要保證在所有的頁(yè)面中都使用準確的域名,否則調用open()會(huì )得到"permission denied"的錯誤提示.一個(gè)常見(jiàn)的錯誤是訪(fǎng)問(wèn)站點(diǎn)時(shí)使用domain.tld,而當請求頁(yè)面時(shí),卻使用www.domain.tld.
  第三個(gè)參數設置請求是否為異步模式.如果是TRUE, JavaScript函數將繼續執行,而不等待服務(wù)器響應.這就是"AJAX"中的"A".
  如果第一個(gè)參數是"POST",send()方法的參數可以是任何想送給服務(wù)器的數據. 這時(shí)數據要以字符串的形式送給服務(wù)器,如下所示:

name=value&anothername=othervalue&so=on 


步驟 2 – "收到!" --- 處理服務(wù)器的響應

  當發(fā)送請求時(shí),要提供指定處理響應的JavaScript函數名.

http_request.onreadystatechange = nameOfTheFunction; 

  我們來(lái)看看這個(gè)函數的功能是什么.首先函數會(huì )檢查請求的狀態(tài).如果狀態(tài)值是4,就意味著(zhù)一個(gè)完整的服務(wù)器響應已經(jīng)收到了,您將可以處理該響應.

if (http_request.readyState == 4) {
    // everything is good, the response is received
} else {
    // still not ready
}

  readyState的取值如下:
  0 (未初始化)
  1 (正在裝載)
  2 (裝載完畢)
  3 (交互中)
  4 (完成)

  接著(zhù),函數會(huì )檢查HTTP服務(wù)器響應的狀態(tài)值. 完整的狀態(tài)取值可參見(jiàn) W3C site. 我們著(zhù)重看值為200 OK的響應.

if (http_request.status == 200) {
    // perfect!
} else {
    // there was a problem with the request,
    // for example the response may be a 404 (Not Found)
    // or 500 (Internal Server Error) response codes
}

  在檢查完請求的狀態(tài)值和響應的HTTP狀態(tài)值后, 您就可以處理從服務(wù)器得到的數據了.有兩種方式可以得到這些數據:

http_request.responseText – 以文本字符串的方式返回服務(wù)器的響應 
http_request.responseXML – 以XMLDocument對象方式返回響應.處理XMLDocument對象可以用JavaScript DOM函數 


步驟 3 – "萬(wàn)事俱備!" - 簡(jiǎn)單實(shí)例

  我們現在將整個(gè)過(guò)程完整地做一次,發(fā)送一個(gè)簡(jiǎn)單的HTTP請求. 我們用JavaScript請求一個(gè)HTML文件, test.html, 文件的文本內容為"I‘m a test.".然后我們"alert()"test.html文件的內容.

<script type="text/javascript" language="javascript">
    var http_request = false;
    function makeRequest(url) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType(‘text/xml‘);
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert(‘Giving up :( Cannot create an XMLHTTP instance‘);
            return false;
        }
        http_request.onreadystatechange = alertContents;
        http_request.open(‘GET‘, url, true);
        http_request.send(null);

    }

    function alertContents() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                alert(http_request.responseText);
            } else {
                alert(‘There was a problem with the request.‘);
            }
        }

    }
</script>
<span
    style="cursor: pointer; text-decoration: underline"
    onclick="makeRequest(‘test.html‘)">
        Make a request
</span>


  本例中:
  用戶(hù)點(diǎn)擊瀏覽器上的"請求"鏈接;
  接著(zhù)函數makeRequest()將被調用.其參數 – HTML文件test.html在同一目錄下;
  這樣就發(fā)起了一個(gè)請求.onreadystatechange的執行結果會(huì )被傳送給alertContents();
  alertContents()將檢查服務(wù)器的響應是否成功地收到,如果是,就會(huì )"alert()"test.html文件的內容.

步驟 4 – "X-文檔" --- 處理XML響應

  在前面的例子中,當服務(wù)器對HTTP請求的響應被收到后,我們會(huì )調用請求對象的reponseText屬性.該屬性包含了test.html文件的內容.現在我們來(lái)試試responseXML屬性.

  首先,我們新建一個(gè)有效的XML文件,后面我們將使用這個(gè)文件.該文件(test.xml)源代碼如下所示:

<?xml version="1.0" ?>
<root>
    I‘m a test.
</root>

  在該腳本中,我們只需修改請求部分:

...
onclick="makeRequest(‘test.xml‘)">
...

  接著(zhù),在alertContents()中,我們將alert()的代碼alert(http_request.responseText);換成:

  var xmldoc = http_request.responseXML;
  var root_node = xmldoc.getElementsByTagName(‘root‘).item(0);
  alert(root_node.firstChild.data);


  這里,我們使用了responseXML提供的XMLDocument對象并用DOM方法獲取存于XML文件中的內容.
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Web 2.0中AJAX技術(shù)應用詳解
Start AJAX
AJAX筆記
Ajax 基礎知識
BlogJava - eamoi之Coder日志
ajax
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久