XMLHttpRequest

本文详细介绍了如何使用JavaScript中的XMLHttpRequest对象从服务器加载数据。通过示例代码展示了创建请求、发送请求以及处理响应的方法。
var xmlhttp;
function loadXMLDoc(url) {
    xmlhttp = null;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {// for IE5 and IE6
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp != null) {
        xmlhttp.onreadystatechange = state_Change;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
    else {
        alert("Error XMLHTTP.");
    }
}

function state_Change() {
    if (xmlhttp.readyState == 4) {// 4 : "loaded"
        if (xmlhttp.status == 200) {// 200 : OK
            // TODO
            document.getElementById('A1').innerHTML = xmlhttp.status;

            document.getElementById('A2').innerHTML = xmlhttp.statusText;

            document.getElementById('A3').innerHTML = xmlhttp.responseText;
        }
        else {
            alert("Error data");
        }
    }
}

 

XMLHttpRequest 是一种用于在浏览器和服务器之间进行异步通信的技术,允许网页在不刷新整个页面的情况下与服务器交换数据。 ### XMLHttpRequest 的基本介绍 从代码中可以看出,XMLHttpRequestEventTarget 接口定义了 7 个事件,分别是 onloadstart、onprogress、onabort、ontimeout、onerror、onload、onloadend。每个 XMLHttpRequest 里面都有一个 upload 属性,upload 是一个 XMLHttpRequestUpload 对象。XMLHttpRequestXMLHttpRequestUpload 都继承了同一个 XMLHttpRequestEventTarget 接口,所以 xhr 和 xhr.upload 都有这 7 个事件。此外,onreadystatechange 是 XMLHttpRequest 独有的事件。因此,xhr 一共有 8 个相关事件,即 7 个 XMLHttpRequestEventTarget 事件加上 1 个独有的 onreadystatechange 事件;而 xhr.upload 只有 7 个 XMLHttpRequestEventTarget 事件 [^2][^3]。 ### XMLHttpRequest 的使用方法 使用 XMLHttpRequest 对象发送请求的基本步骤如下: 1. **获取 XMLHttpRequest 对象实例的引用**:可以创建一个新的实例,也可以访问包含有 XMLHttpRequest 实例的一个变量。 2. **设置状态改变处理函数**:把对象的 onreadystatechange 属性设置为指向一个 JavaScript 函数的指针,该函数会处理 XMLHttpRequest 对象状态的改变。 3. **指定请求的属性**:使用 XMLHttpRequest 对象的 open() 方法指定将发出的请求。open() 方法取 3 个参数,一个是指示所用方法(通常是 GET 或 POST)的串,另一个是表示目标资源 URL 的串,还有一个 Boolean 值,指示请求是否是异步的。 4. **发送请求**:使用 XMLHttpRequest 对象的 send() 方法把请求传送到指定的目标资源。send() 方法接受一个参数,通常是一个串或一个 DOM 对象,这个参数会作为请求体的一部分传送到目标 URL。向 send() 方法提供参数时,要确保 open() 中指定的方法是 POST。如果没有数据要作为请求体的一部分发送,则使用 null [^1]。 以下是一个简单的使用 XMLHttpRequest 发送 GET 请求的示例代码: ```javascript // 创建 XMLHttpRequest 对象 const xhr = new XMLHttpRequest(); // 处理状态改变事件 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } }; // 打开请求 xhr.open('GET', 'https://example.com/api/data', true); // 发送请求 xhr.send(null); ``` ### XMLHttpRequest 的原理 XMLHttpRequest 的工作原理基于浏览器与服务器之间的 HTTP 协议。当创建一个 XMLHttpRequest 对象并调用 open() 方法指定请求的相关信息后,浏览器会根据这些信息构建一个 HTTP 请求。然后,使用 send() 方法将请求发送到服务器。服务器接收到请求后,会进行相应的处理,并返回一个 HTTP 响应。浏览器接收到响应后,XMLHttpRequest 对象的状态会发生改变,通过监听 onreadystatechange 事件,可以获取响应的状态和数据 [^1]。 ### XMLHttpRequest 的应用场景 XMLHttpRequest 常用于以下场景: - **动态加载内容**:在不刷新整个页面的情况下,动态加载新的内容,如新闻列表的滚动加载。 - **表单数据提交**:异步提交表单数据,避免页面刷新,提高用户体验。 - **实时数据更新**:定期从服务器获取最新数据,如股票行情、天气预报等。 ### 可能遇到的报错 例如,可能会出现 “Uncaught DOMException: Failed to execute 'open' on 'XMLHttpRequest': Synchronous requests from a document must not set a response type.” 这样的报错 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值