林信良(良葛格)的专栏

http://caterpillar.onlyfun.net/

用户操作
[即时聊天] [发私信] [加为好友]
良葛格ID:caterpillar_here
241769次访问,排名286,好友0人,关注者91人。
caterpillar_here的文章
原创 51 篇
翻译 0 篇
转载 1 篇
评论 333 篇
良葛格的公告
更多文件请访问
良葛格学习笔记

最近评论
niutao0603:强悍,学习了~~
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎公关 搜索引擎排名 网站优化 软文发布 QQ:441843869
工业门
wangle100wangle:写的不错,谢谢分享。关注中。
hero0513:不错。。学习了。。
songlion112:好例子,谢谢
文章分类
收藏
    相册
    Java
    夏昕的专栏
    良葛格学习笔记
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 XMLHttpRequest收藏

    新一篇: Hello! Ajax! | 旧一篇: AJAX

     在Ajax應用程式中,如果是Mozilla/Firefox/Safari中,可以透過XMLHttpRequest來發出非同步請求,如果是在IE6 或IE先前版本,則是使用ActiveXObject來發出非同步請求,為了各個不同瀏覽器間的相容性,必須進行測試可取得XMLHttpRequest 或ActiveXObject,例如:
    var xmlHttp;
    function createXMLHttpRequest() {
        if (window.XMLHttpRequest) { // 如果可以取得XMLHttpRequest
            xmlHttp = new XMLHttpRequest();  // Mozilla、Firefox、Safari
        }
        else if (window.ActiveXObject) { // 如果可以取得ActiveXObject
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer
        }
    }

    這段程式碼可以滿足大部份的瀏覽器,您可以再進一步檢查是否真正生成了物件,例如:
    if(xmlHttp) {
        // do request
    }
    else {
        alert("您的瀏覽器不支援這個Ajax程式的功能");
    }

    在建立XMLHttpRequest之後,則可以使用以下的幾種方法:
    • void open(string method, string url, boolean asynch, string username, string password)
    開啟對伺服端的連結;method為請求方式(GET、POST);url為伺服端位址,如果是GET的話,可加上請求參數與值;asynch為非同步設定,預設是true,表示使用非同步方式。
    • void send(content)
    對伺服端傳送請求,content這以放XML、輸入串流、字串、JSON格式的內容,放進去會放在POST本體中發送。
    • void setRequestHeader(string header, string value)
    為HTTP請求設定一個給定的 header 設定值。
    • void abort()
    用來中斷請求。
    • string getAllResponseHeaders()
    傳回一個字串,其中包含HTTP請求的所有回應標頭。
    • string getResponseHeader(string header)
    傳回一個字串,其中包含指定的回應標頭值。

    XMLHttpRequest包括以下幾個標準屬性:
    • onreadystatechange
    參考至callback函式,readyState每次改變時,都會呼叫onreadystatechange所參考的函式。
    • readyState
    會有0到4的數值,分別表示不同的請求狀態:
    0 = 未初始化的連線(uninitialized),還沒呼叫open()
    1 = 載入中(loading),呼叫open(),還沒呼叫send()
    2 = 已載入(loaded),呼叫send(),請求header/status準備好
    3 = 互動中(interactive),正在與伺服器互動中
    4 = 請求完成(completed),完成請求
    • responseText
    伺服器傳來的請求回應文字,會設定給這個屬性。
    • responseXML
    伺服器傳來的請求回應如果是XML,會成為DOM設定給這個屬性。
    • status
    伺服器回應的狀態碼,例如200是OK,404為Not Found…
    • statusText
    伺服器回應的狀態文字。

    一個基本的Ajax請求可以是以下的片段:
    function startRequest() {
        createXMLHttpRequest(); // 建立非同步請求物件
        xmlHttp.onreadystatechange = handleStateChange;  // 設定callback函式
        xmlHttp.open("GET", "simpleResponse.txt");  // 開啟連結
        xmlHttp.send(null);  // 傳送請求
    }

    function handleStateChange() { // 在這邊處理非同步回應
        …
    }

    當每次readyState改變時,都會呼叫以上程式片段中設定的handleStateChange()函式,通常會在請求完成進行處理,所以您可以如以下的程式片段來處理回應:
    function handleStateChange() {
       if (xmlHttp.readyState == 4) { // 測試狀態是否請求完成
         if (xmlHttp.status == 200) { // 如果伺服端回應OK
              alert("伺服器回應" + xmlHttp.responseText);  // 這邊只取得回應文字
         }
       }
    }
     

    发表于 @ 2007年02月16日 11:12:00|评论(loading...)|编辑

    新一篇: Hello! Ajax! | 旧一篇: AJAX

    评论

    #bobui 发表于2008-06-19 16:59:54  IP: 58.19.230.*
    谢谢
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 良葛格