原始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创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
Jul 26 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
javascript页面倒计时实例
Jul 25 Javascript
详解js中==与===的区别
Jan 08 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
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/06/29 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python如何将图片转换为字符图片
2020/08/19 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Django框架反向解析操作详解
2019/11/28 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
PyTorch安装与基本使用详解
2020/08/31 Python
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
书法大赛策划方案
2014/06/04 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
手残删除python之后的补救方法
2021/06/26 Python
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL