<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 一手的小窩窩 閱讀(495) 評論(0)  編輯  收藏 所屬分類: JAVASCRIPT
    主站蜘蛛池模板: 国产精品亚洲一区二区三区| 亚洲a级片在线观看| 毛片免费在线观看网站| 全黄大全大色全免费大片| 无码人妻一区二区三区免费视频| 亚洲熟妇无码八V在线播放| 亚洲国产香蕉碰碰人人| 亚洲精品乱码久久久久66| 在线亚洲精品自拍| 自拍偷自拍亚洲精品情侣| 亚洲人妻av伦理| 亚洲午夜久久久久妓女影院 | 亚洲宅男永久在线| 亚洲AV福利天堂一区二区三| 亚洲成在人天堂在线| 久久亚洲sm情趣捆绑调教 | 亚洲男人的天堂www| 久久精品国产亚洲AV网站| 成人免费无码H在线观看不卡| 青柠影视在线观看免费高清| 亚洲黄色免费网址| 亚洲?V无码成人精品区日韩| 亚洲国产日韩在线视频| 精品久久亚洲中文无码| 一级成人a做片免费| 毛片a级毛片免费观看免下载| 亚洲高清无码综合性爱视频| 亚洲色图校园春色| 日本免费人成网ww555在线| 青青青国产在线观看免费网站| 免费观看国产精品| 亚洲精品欧美综合四区| 一级毛片免费毛片一级毛片免费| 在线a亚洲v天堂网2018| 亚洲成人午夜电影| 一区二区免费视频| 亚洲色精品88色婷婷七月丁香| 黄页视频在线观看免费| 成人黄18免费视频| 亚洲日本成本人观看| 免费av欧美国产在钱|