XMLHttpRequest

主要內容javascript

這裏是列表文本這裏是列表文本使用XMLHttpRequest 對象
使用XMLHttpRequest 事件
跨域ajax 通訊的限制java

**ajax **
全名:asynchronous javascript + xml 的簡寫
改變了web誕生依賴單擊等待的模式。web

ajax的技術核心:XMLHttpRequest 對象(簡稱 XHR)。
這是微軟引進的一個特性,在這以前ajax的 通訊必須藉助一些hack 手段進行。ajax

XHR 爲向服務器發送請求和接收服務器的響應提供了一系列的接口。可以以異步的方式從服務器獲取更多信息。也就是說能夠使用XHR 獲取新數據,而後經過DOM將數據插入到頁面中。跨域

此外,雖然名字中包含XHR,但 ajax通訊與數據格式無關,得到的數據不必定就是xml數據。瀏覽器

歷史
IE5 是第一款引入XHR的瀏覽器 。在IE5中 XHR對象是經過MSXML庫中的一個ActiveX對象實現的。服務器

在IE5中 可能遇到三種不一樣版本的XHR 對象。即 MSXML2.XMLHttp、 MSXML2.XMLHttp.3.0、 MSXML2.XMLHttp.6.0。異步

IE7以前的 版本async

要使用MSXML庫中的XHR 對象,須要編寫一個函數: 這個函數會根據可用的MSXML庫建立最新版本的XHR對象。函數

function createXHR() {
    if(typeof arguments.callee.activeString != "string") {
        var versions = ["MSXML2.XMLLHttp.6.0","MSXML2.XMLLHttp.3.0","MSXML2.XMLLHttp"],
            i,len;

        for (i=0,len= versions.length;i< len;i++) {
            try{
                new ActiveXObject(versions[i]);
                arguments.callee.activeXString = versions[i];
                break;
            } catch (ex) {
                //跳過
            }
        }
    }
    return new ActiveXObject(arguments.callee.activeXString);
}

var xhr = createXHR();

IE7+、FireFox、Operra、Chrome和Safari都支持原生的XHR對象

能夠使用XHR構造函數

var xhr = new XMLHttpRequest();

對二者都支持

function createXHR() {
    if (typeof XMLHttpRequest != "undefined"){
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        if(typeof arguments.callee.activeXString != "string"){
            var versions=["MSXML2.XMLLHttp.6.0","MSXML2.XMLLHttp.3.0",
                    "MSXML2.XMLLHttp"],
                i,len;
            for (i=0,len=versions.length;i<len;i++) {
                try{
                    new ActiveXObject(versions[i]);
                    arguments.callee.activeXString = versions[i];
                    break;
                } catch (ex){
                    //跳過
                }
            }
        }
        return new ActiveXObject(arguments.callee.activeXString);
    } else {
        throw new Error("NO XHR object available");
    }
}

var xhr = createXHR();

建立XHR對象

這個程序,首先檢測原生的XHR是否存在,若是存在則返回其新實例。 若是不存在,則檢測ActiveX 對象。若是這兩個都不存在,則拋出一個錯誤。

相關文章
相關標籤/搜索