原始XMLHttpRequest方法详情回顾


Posted in Javascript onNovember 28, 2013

用一个典型的登录验证的例子来演示吧

一般来说,使用XMLHttpRequest对象来进行登陆验证要经过以下这几个步骤

1.使用DOM方式获得输入框中的值         

var userName = document.getElementById("userName").value;

2.创建XMLHttpRequest对象,这一步比较复杂,主要原因是要考虑浏览器的兼容性问题。      
if (window.XMLHttpRequest) {
        //针对FireFox,Mozillar,Opera,Safari,IE7,IE8
        xmlhttp = new XMLHttpRequest();
        //针对某些特定版本的mozillar浏览器的BUG进行修正
        if (xmlhttp.overrideMimeType) {
            xmlhttp.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) {
         //针对IE6,IE5.5,IE5
        //两个可以用于创建XMLHTTPRequest对象的控件名称,保存在一个js的数组中
        //排在前面的版本较新
        var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
        for (var i = 0; i < activexName.length; i++) {
            try{
                //取出一个控件名进行创建,如果创建成功就终止循环
                //如果创建失败,回抛出异常,然后可以继续循环,继续尝试创建
                xmlhttp = new ActiveXObject(activexName[i]);
                break;
            } catch(e){
            }
        }
    }

3.注册XMLHttpRequest对象的回调函数,注册回调函数时,之需要函数名,不要加括号。    
//注册回调函数时,之需要函数名,不要加括号
    //我们需要将函数名注册,如果加上括号,就会把函数的返回值注册上,这是错误的
    xmlhttp.onreadystatechange = callback;

4.设置( GET )连接信息     
//第一个参数表示http的请求方式,支持所有http的请求方式,主要使用get和post
//第二个参数表示请求的url地址,get方式请求的参数也在url中
//第三个参数表示采用异步还是同步方式交互,true表示异步
xmlhttp.open("GET","AJAXServer?name="+ userName,true);

5.发送请求 
xmlhttp.send(null);

6.(POST)方式,需要自己设置http的请求头,并且由于要进行编码,所以不能直接在XHR.open的第二个参数中将数据发过去,而应该用send()方法将数据传送过去
//POST方式请求的代码
//xmlhttp.open("POST","AJAXServer",true);
//POST方式需要自己设置http的请求头
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//POST方式发送数据
xmlhttp.send("name=" + userName);

回调函数:
//回调函数
function callback() {
    //alert(xmlhttp.readyState);
    //5。接收响应数据
    //判断对象的状态是交互完成
    if (xmlhttp.readyState == 4) {
        //判断http的交互是否成功
        if (xmlhttp.status == 200) {
            //获取服务漆器端返回的数据
            //获取服务器段输出的纯文本数据
            var responseText = xmlhttp.responseText;
            //将数据显示在页面上
            //通过dom的方式找到div标签所对应的元素节点
            var divNode = document.getElementById("result");
            //设置元素节点中的html内容
            divNode.innerHTML = responseText;
        } else {
            alert("出错了!!!");
        }
    }
}
Javascript 相关文章推荐
javascript 静态对象和构造函数的使用和公私问题
Mar 02 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
纯js实现无限空间大小的本地存储
Jun 18 Javascript
JavaScript操作URL的相关内容集锦
Oct 29 Javascript
node.js入门实例helloworld详解
Dec 23 Javascript
vue+iview+less+echarts实战项目总结
Feb 22 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
Jul 29 Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 #Javascript
使用js写的一个简易的投票
Nov 27 #Javascript
juery框架写的弹窗效果适合新手
Nov 27 #Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 #Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 #Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 #Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 #Javascript
You might like
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
利用nohup来开启python文件的方法
2019/01/14 Python
python如何制作缩略图
2019/04/30 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python 操作excel表格的方法
2020/12/05 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
小学生开学第一课活动方案
2014/03/27 职场文书
家长对老师的评语
2014/04/18 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书