原始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对象的支持
Jul 25 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
angular.bind使用心得
Oct 26 Javascript
原生js配合cookie制作保存路径的拖拽
Dec 29 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
layui的面包屑或者表单不显示的解决方法
Sep 05 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
Nov 07 Javascript
JS sort排序详细使用方法示例解析
Sep 27 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python数据结构之图的应用示例
2018/05/11 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
小学美术教学反思
2014/02/01 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
教师求职信
2014/06/17 职场文书
公证委托书格式
2014/09/13 职场文书
六查六看剖析材料
2014/10/06 职场文书
2014年信用社工作总结
2014/11/25 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
爱国影片观后感
2015/06/18 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL