文档章节

XMLHttpRequest

lemos
 lemos
发布于 2016/11/25 13:38
字数 518
阅读 11
收藏 0

主要内容

这里是列表文本这里是列表文本使用XMLHttpRequest 对象
使用XMLHttpRequest 事件
跨域ajax 通信的限制

**ajax **
全名:asynchronous javascript + xml 的简写
改变了web诞生依赖单击等待的模式。

ajax的技术核心:XMLHttpRequest 对象(简称 XHR)。
这是微软引进的一个特性,在这之前ajax的 通信必须借助一些hack 手段进行。

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之前的 版本

要使用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 对象。如果这两个都不存在,则抛出一个错误。

© 著作权归作者所有

共有 人打赏支持
上一篇: XHR 的用法
下一篇: json - 使用 json-lib
lemos
粉丝 7
博文 182
码字总数 91912
作品 0
芜湖
后端工程师
私信 提问
XMLHttpRequest对象的创建

首先先介绍一下XMLHttpRequest对象,我们都知道Ajax它并不是单单一门技术,而是几种技术的融合。XMLHttpRequest是Ajax技术体系中最为核心的技术,如果没有XMLHttpRequest,Ajax的其余技术就无...

邵鸿鑫
2014/11/04
0
0
[Ajax-相濡以沫,不如相忘于江湖] Ajax核心: XMLHttpRequest对象

Ajax应用工作模式/过程: 第一步,初始化XMLHttpRequest对象; 第二步,打开与服务器的连接。打开连接时,指定发送请求的方法: 采用GET或POST; 指定是否采用异步方式; 第三部,设置监听XMLHttp...

LSantorini
2016/01/28
129
0
AJAX基础,AJAX验证邮箱是否存在的例子。

例子: 一下为servlet的代码: XMLHttpRequest是ajax的基础,创建xmlhttprequest的方法是:老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象: 在使用时首先判断浏览器是否支持X...

奔跑的码农
2016/08/31
270
0
XMLHttpRequest对象如何兼容各浏览器使用?

什么是 XMLHttpRequest 对象? XMLHttpRequest 对象用于在后台与服务器交换数据。 XMLHttpRequest 对象是开发者的梦想,因为您能够: 在不重新加载页面的情况下更新网页 在页面已加载后从服务...

斯武丶风晴
2015/09/15
111
0
Ajax发送Post请求

Ajax发送post请求与发送get请求大致类似。以下看详细实例。首先看JSP显示页面: 然后看对发送信息进行处理的Servlet类。由于是POST方式发送信息,所以看一下doPost方法。 @Overrideprotected...

技术mix呢
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
5
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部