原始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 测试及效验工具
Apr 18 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
读jQuery之十 事件模块概述
Jun 27 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
CSS鼠标响应事件经过、移动、点击示例介绍
Sep 04 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
Nov 07 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
微信小程序开发入门基础教程
Apr 19 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 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实现jQuery扩展函数
2009/10/30 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
JAVA程序员自荐书
2014/01/30 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
兽医医药专业求职信
2014/07/27 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
辞职信格式范文
2015/05/13 职场文书
心灵点滴观后感
2015/06/02 职场文书
水知道答案观后感
2015/06/08 职场文书
地心历险记观后感
2015/06/15 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS