原始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的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
简介JavaScript中的setHours()方法的使用
Jun 11 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
May 10 Javascript
antd Upload 文件上传的示例代码
Dec 14 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php可变长参数处理函数详解
2017/02/22 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
vue-router单页面路由
2017/06/17 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
JavaScript简单编程实例学习
2020/02/14 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
JS中的继承操作实例总结
2020/06/06 Javascript
通过源码分析Python中的切片赋值
2017/05/08 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
详解Python做一个名片管理系统
2019/03/14 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
计算机应用与科学个人的自我评价
2013/11/15 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
班风学风建设方案
2014/05/06 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书