原始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 相关文章推荐
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
js贪吃蛇游戏实现思路和源码
Apr 14 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 Javascript
vue抽出组件并传值实例
Jul 31 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 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
PHP 进程锁定问题分析研究
2009/11/24 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
Python json模块使用实例
2015/04/11 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Python流程控制语句的深入讲解
2020/06/15 Python
Python 解析xml文件的示例
2020/09/29 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
新浪网技术部笔试题
2016/08/26 面试题
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
求职信标题怎么写
2014/05/26 职场文书
应急处置方案
2014/06/16 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers