原始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 相关文章推荐
js apply/call/caller/callee/bind使用方法与区别分析
Oct 28 Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
Vue中图片Src使用变量的方法
Oct 30 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-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
PHP微信支付开发实例
2016/06/22 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python生成随机密码的方法
2017/06/16 Python
Python2随机数列生成器简单实例
2017/09/04 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Django实现随机图形验证码的示例
2020/10/15 Python
Python 多进程原理及实现
2020/12/21 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
建党伟业电影观后感
2015/06/01 职场文书
七一慰问简报
2015/07/20 职场文书
LeetCode189轮转数组python示例
2022/08/05 Python