原始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 相关文章推荐
一个判断email合法性的函数[非正则]
Dec 09 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
Jun 06 Javascript
javascript中的遍历for in 以及with的用法
Dec 22 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
vue mint-ui tabbar变组件使用
May 04 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
js实现全选和全不选
Jul 28 Javascript
uniapp开发打包多端应用完整方法指南
Dec 24 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+mysql一个名片库程序
2006/10/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PHP常用技巧汇总
2016/03/04 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
python实现石头剪刀布小游戏
2021/01/20 Python
python中关于数据类型的学习笔记
2020/07/19 Python
Python 必须了解的5种高级特征
2020/09/10 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
小班重阳节活动方案
2014/02/08 职场文书
网络营销实训总结
2015/08/03 职场文书
工程主管竞聘书
2015/09/15 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB