<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-6  評論-38  文章-40  trackbacks-0
    AJAX入門必讀與實例(仿google的拖動)

    AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。

    主要包含了以下幾種技術:

    Ajax(Asynchronous JavaScript + XML)的定義
    基于web標準(standards-based presentation)XHTML+CSS的表示;
    使用 DOM(Document Object Model)進行動態顯示及交互;
    使用 XML 和 XSLT 進行數據交換及相關操作;
    使用 XMLHttpRequest 進行異步數據查詢、檢索;
    使用 JavaScript 將所有的東西綁定在一起。

    ? 傳統的web應用允許用戶填寫表單(form),當提交表單時就向web服務器發送一個請求。服務器接收并處理傳來的表單,然后返回一個新的網頁。這個做法浪費了許多帶寬,因為在前后兩個頁面中的大部分HTML代碼往往是相同的。由于每次應用的交互都需要向服務器發送請求,應用的響應時間就依賴于服務器的響應時間。這導致了用戶界面的響應比本地應用慢得多。

    ? 與此不同,AJAX應用可以僅向服務器發送并取回必需的數據,它使用SOAP或其它一些基于XML的web service接口,并在客戶端采用JavaScript處理來自服務器的響應。因為在服務器和瀏覽器之間交換的數據大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。

    Ajax應用程序的優勢在于:

    1. 通過異步模式,提升了用戶體驗

    2. 優化了瀏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬占用

    3. Ajax引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載。

    **************************************************************************************************

    xmlhttp的屬性:

    onreadystatechange ? 指定當readyState屬性改變時的事件處理句柄,只寫 。
    readyState ? ? 返回當前請求的狀態,只讀。
    responseBody ? ? 將回應信息正文以unsigned byte數組形式返回,只讀
    responseStream ? ? ? 以Ado Stream對象的形式返回響應信息,只讀 。
    responseText ? ? ? 將響應信息作為字符串返回,只讀 。
    responseXML ? ? ? 將響應信息格式化為Xml Document對象并返回,只讀 。
    status ? ? ? ? 返回當前請求的http狀態碼,只讀 。
    statusText ? ? ? 返回當前請求的響應行狀態,只讀 。

    xmlhttp的方法:
    abort ? ? ? ? 取消當前請求
    getAllResponseHeaders ? 獲取響應的所有http頭
    getResponseHeader ? 從響應信息中獲取指定的http頭
    open ? ? ? ? 創建一個新的http請求,并指定此請求的方法、URL以及驗證信息(用戶名/密碼) //常用
    send ? ? ? ? 發送請求到http服務器并接收回應 //常用
    setRequestHeader ? 單獨指定請求的某個http頭

    語法:
    onreadystatechang 指定當readyState屬性改變時的事件處理句柄,只寫

    xmlHttpObj.onreadystatechange=a;
    function a(){
    ? if(xmlHttpObj.readyState==4){
    ? ? if(xmlHttpObj.stateus==200){
    ? ? ? ? alert(xmlHttpObj.responseText);
    ? ? }else{
    ? ? ? ? alert("加載失敗!\n原因:"+xmlHttpObj.stateText);
    ? ? }
    ? }
    }



    readyState 返回當前請求的狀態,只讀。

    xmlHttpObj.readyState;

    參見函數a;

    readyState,變量。定義如下:
    0 (未初始化) ? ? ? 對象已建立,但是尚未初始化(尚未調用open方法)
    1 (初始化) ? ? ? 對象已建立,尚未調用send方法
    2 (發送數據) ? ? ? send方法已調用,但是當前的狀態及http頭未知
    3 (數據傳送中) ? ? ? 已接收部分數據,因為響應及http頭不全,這時通過responseBody和responseText獲取部分數據會出現錯誤,
    4 (完成) ? ? ? 數據接收完畢,此時可以通過通過responseBody和responseText獲取完整的回應數據



    responseText 將響應信息作為字符串返回,只讀 。

    xmlHttpObj.responseText;

    responseBody ,responseStream ,responseText ,responseXML 與之相似

    responseXML可以返回一個文檔樹(DOM),可以使用document.getElementsByTagName,document.getElementsByTagNameNS,document.getElementById等對其操作



    stateus 返回當前請求的http狀態碼,只讀 。

    xmlHttpObj.stateus;

    參見函數a;

    長整形標準http狀態碼,定義如下:
    值 ? 描述
    100 ? Continue
    101 ? Switching protocols
    200 ? OK
    201 ? Created
    202 ? Accepted
    203 ? Non-Authoritative Information
    204 ? No Content
    205 ? Reset Content
    206 ? Partial Content
    300 ? Multiple Choices
    301 ? Moved Permanently
    302 ? Found
    303 ? See Other
    304 ? Not Modified
    305 ? Use Proxy
    307 ? Temporary Redirect
    400 ? Bad Request
    401 ? Unauthorized
    402 ? Payment Required
    403 ? Forbidden
    404 ? Not Found
    405 ? Method Not Allowed
    406 ? Not Acceptable
    407 ? Proxy Authentication Required
    408 ? Request Timeout
    409 ? Conflict
    410 ? Gone
    411 ? Length Required
    412 ? Precondition Failed
    413 ? Request Entity Too Large
    414 ? Request-URI Too Long
    415 ? Unsupported Media Type
    416 ? Requested Range Not Suitable
    417 ? Expectation Failed
    500 ? Internal Server Error
    501 ? Not Implemented
    502 ? Bad Gateway
    503 ? Service Unavailable
    504 ? Gateway Timeout
    505 ? HTTP Version Not Supported


    statusText 返回當前請求的響應行狀態

    xmlHttpObj.stateText;

    參考函數a;


    open 創建一個新的http請求,并指定此請求的方法、URL以及驗證信息

    xmlHttpObj.open(Method,URL[,Async][,User][,PassWord]);
    []表示可選

    參數:
    Method:POST|GET(大小寫不敏感)
    URL:請求的URL地址,可以為絕對地址也可以為相對地址。
    Async:[true|fase] 是否同步,默認為true。
    User:如果服務器需要驗證,此處指定用戶名,如果未指定,當服務器需要驗證時,則會彈出驗證窗口。
    Password:驗證信息中的密碼部分,如果用戶名為空,則此值將被忽略。

    send 發送請求到http服務器并接收回應

    xmlHttpObj.send([Text]);

    參數:
    Text:要發送的數據,默認為空(null);

    ************************************************************************************************************
    一個例子:


    創建一個xmlhttp對象:現在的絕對多數瀏覽器都增加了對XmlHttp的支持,IE中使用ActiveXObject方式創建XmlHttp對象,其他瀏覽器如:Firefox、Opera、NetScape等通過window.XMLHttpRequest來創建xmlhttp對象。
    var xmlhttp;
    function new_xmlHttp(){
    ? var a=null;
    ? if(window.ActiveXObject){//IE(此處的IE泛指所有用IE內核的瀏覽器,下同)
    ? ? a=new ActiveXObject("Msxml2.XMLHTTP");
    ? ? if(!a){
    ? ? ? ? a=new ActiveXObject("Microsoft.XMLHTTP")
    ? ? }
    ? }else if(window.XMLHttpRequest){//Mozilla(FireFox,NS)
    ? ? a=new XMLHttpRequest()
    ? }
    ? return a;
    }
    xmlhttp=new_xmlhttp();
    xmlhttp.open("GET","http://localhost/xmlfile.xml",false);//創建一個新的HTTP請求,并指定URL
    xmlhttp.send();//發送
    xmlhttp.onreadystatechange=function(){
    ? if(xmlhttp.readyState==4){
    ? ? if(xmlhttp.stateus==200){
    ? ? ? ? alert(xmlhttp.responseText);
    ? ? }else{
    ? ? ? ? alert("加載失敗!\n原因:"+xmlhttp.stateText);
    ? ? }
    ? }
    }


    一個簡單完整的XMLHTTP例子:
    將以下代碼保存為本地HTML文件再使用
    CODE:
    <!--begin-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "[url]http://www.w3.org/TR/html4/loose.dtd[/url]">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>一個簡單的XMLHTTP例子</title>
    </head>

    <body>
    <script>
    var oDiv
    var xh
    function getXML()
    {
    oDiv = document.all.m
    oDiv.innerHTML = "正在裝載欄目數據,請稍侯......."
    oDiv.style.display= ""
    xh = new ActiveXObject("Microsoft.XMLHTTP")
    xh.onreadystatechange = getReady
    xh.open("GET",a.value,true)
    xh.send()

    }

    function getReady()
    {
    if(xh.readyState==4)
    {
    if(xh.status==200)
    {

    ? oDiv.innerHTML = "完成"
    }
    else
    {
    ? oDiv.innerHTML = "抱歉,裝載數據失敗。原因:" + xh.statusText
    }
    }
    }
    </script>
    <body>
    xmlhttp異步的例子:
    URL:<input name=a value="[url]http://s041149.stu.cdut.edu.cn/xml/myxmltest.xml[/url]" style="width:600px">
    <input onclick="getXML()" type="button" value="得到源代碼">
    <input onclick="if(xh && xh.responseText) {alert(xh.responseText);oDiv.innerHTML=xh.responseText}" type="button" value="顯示源代碼">
    <div id=m></div>

    </body>
    </html>

    <!--end-->
    [Copy to clipboard]


    例子:
    仿GOOGLE個性化主頁的拖動并保存定位,http://s041149.stu.cdut.edu.cn/xml/myxmltest.xml為保存相對位置的XML文件,請注意拖動前后的變化
    http://s041149.stu.cdut.edu.cn/xml/(細節問題可E-MAIL:hktx[at]163[dot]com)
    posted on 2006-12-01 21:18 一手的小窩窩 閱讀(491) 評論(0)  編輯  收藏 所屬分類: JAVASCRIPT
    主站蜘蛛池模板: 无码不卡亚洲成?人片| 韩国免费三片在线视频| 久久久久国产成人精品亚洲午夜 | 伊伊人成亚洲综合人网7777| 亚洲国产av一区二区三区丶| 真实国产乱子伦精品免费| 亚洲激情视频在线观看| 99热在线免费观看| 亚洲电影在线免费观看| 思思re热免费精品视频66| 亚洲国产区男人本色在线观看| 成人免费一级毛片在线播放视频| 国产亚洲sss在线播放| 精品免费国产一区二区三区| 韩国亚洲伊人久久综合影院| 久久久久久精品成人免费图片| 亚洲一区精品中文字幕| 2021国产精品成人免费视频| 亚洲欧洲无码AV不卡在线| 青青青国产免费一夜七次郎| 羞羞网站免费观看| 亚洲自偷自偷在线制服 | 国产精品亚洲片在线| 久久99精品视免费看| 亚洲a级成人片在线观看| 日韩在线视频免费看| 未满十八私人高清免费影院| 久久亚洲高清观看| 国产免费一区二区三区| 亚洲日韩中文字幕一区| 国产亚洲精品无码专区 | 日本黄色免费观看| 国产99精品一区二区三区免费| 亚洲精品~无码抽插| 很黄很黄的网站免费的| 黄色大片免费网站| 亚洲高清无在码在线无弹窗 | 亚洲欧洲国产成人综合在线观看| 免费人成激情视频在线观看冫| 亚洲免费一级视频| 国产亚洲精品无码拍拍拍色欲 |