原始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 相关文章推荐
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
node.js中的fs.fchmodSync方法使用说明
Dec 16 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
AngularJS 最常用的功能汇总
Feb 17 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
微信小程序CSS3动画下拉菜单效果
Nov 04 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
Vue vm.$attrs使用场景详解
Mar 08 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 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中创建图像并绘制文字的例子
2014/11/19 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
详解Django中的过滤器
2015/07/16 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
Django中间件实现拦截器的方法
2018/06/01 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
茶叶生产计划书
2014/01/10 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技