原生Ajax实现异步数据传输

来源:互联网 发布:爱奇艺网络机顶盒版 编辑:程序博客网 时间:2024/05/17 01:52

描述:不用前端js框架(如jQuery、Dojo、ext、proptype等)的原生Ajax,异步实现与后台的数据传输,不依赖任何js包

- 五个步骤

注:所有js代码均位于某一个js文件中,调用函数只需要引入该文件
- 1.建立XMLHttpRequest对象

//全局变量,记录建立的XMLHttpRequest对象var xmlhttp;//AjaxDemofunction ajaxDemo() {    //通过页面内置dom对象来获取对应位置的输入数据    var input = document.getElementById("inputId").value;    //针对FireFox,Mozillar,Opera,Safari,IE7,IE8    if (window.XMLHttpRequest) {        xmlhttp = new XMLHttpRequest();        //针对某些特定版本的mozillar浏览器的BUG进行修正        if (xmlhttp.overrideMimeType) {            xmlhttp.overrideMimeType("text/xml");        }    } else if (window.ActiveXObject) { //针对IE6,IE5.5,IE5        //两个可以用于创建XMLHTTPRequest对象的控件名称        var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];        for (var i = 0; i < activexName.length; i++) {            try{                //取一个控件名创建,创建成功终止循环                xmlhttp = new ActiveXObject(activexName[i]);                break;            } catch(e){            //如果创建失败,回抛出异常然后可以继续循环继续尝试创建            }        }    }    //确认XMLHTtpRequest对象创建成功    if (!xmlhttp) {        alert("XMLHttpRequest对象创建失败!!");        return;    } else {        alert(xmlhttp.readyState);    }

获取input标签中的数据,使用页面内置dom对象来获取对应位置(id为“input”)的标签的输入数据,前端代码示例

<input type="text" id="inputId"/><input type="button" value="OK" onclick="ajaxDemo()"/
  • 2.设置回调函数
    注:此行代码接上面XMLHTtpRequest对象创建
    callback是函数名,该函数将会在步骤5给出定义
    函数名后不能加括号,否则就是函数调用
 xmlhttp.onreadystatechange = callback;
  • 3.使用Open方法与服务器建立链接
    此行代码接上面设置回调函数
    参数1: http的请求方式,支持所有http的请求方式,一般用get或post
    参数2: 请求的url地址,get方式请求的参数也在url中
    参数3: 采用的交互方式,true表异步
 xmlhttp.open("GET","AJAXServer?input="+ input,true);
  • 4.使用send方法向服务器端发送数据
    这里只有一个参数,通过get方法从url传输,所以send函数参数设为null
 xmlhttp.send(null);

如果使用post方式请求数据,则send函数调用如下

 xmlhttp.setRequestHeader("Context-Type","application/x-www-form-urlencoded"); //post请求方式需要自己设置http请求头RequestHeader xmlhttp.send("input="+input);
  • 5.在回调函数中针对不同响应状态进行处理
function callback() {    //判断对象的状态是交互完成    if (xmlhttp.readyState == 4) {        //判断http的交互是否成功        if (xmlhttp.status == 200) {            //获取服务漆器端返回的纯文本数据            var text = xmlhttp.responseText;            //将数据打印到页面上            //通过dom的方式找到div标签所对应的元素节点            var node = document.getElementById("result");            //设置元素节点中的html内容            node.innerHTML = text;        } else {            //出错了        }    }else{       //XMLHttpRequest对象与后台的交互未完成    }}

后台Servlet获取数据代码

    //通过url或者send中给定的数据名来获取指定数据    String input = request.getParameter("input");
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 附件预览时发生错误怎么办 手机下载的压缩包打不开怎么办 邮箱提示中转站剩余容量不足怎么办 手机邮箱密码忘记了怎么办 垃圾邮件被系统删除了怎么办 邮箱里的邮件下载不了怎么办 qq邮箱下载不了文件怎么办 苹果手机忘记邮箱密码怎么办 oppo手机安装包损坏怎么办 手机安装包损坏无法安装怎么办 手机qq安装包损坏了怎么办 安装包损坏无法安装怎么办 方舟生存进化安装包损坏怎么办 如果安装包坏了怎么办 酷狗下载音乐收费怎么办 酷狗下载歌曲收费怎么办 酷狗音乐下载歌曲要钱怎么办 酷狗音乐下载要钱怎么办 手机酷狗音乐下载收费怎么办 咪咕视频静音了怎么办 卡西欧自拍神器死机了怎么办 手机一自拍就死机怎么办 微信怎么黑屏了怎么办 宝宝睡袋买大了怎么办 社保中间断了一年怎么办 京东阅读换手机怎么办 酷狗自动续费怎么办 qq音乐下载需要钱怎么办 电脑播放音乐没声音怎么办 酷狗账号注销了怎么办 电脑酷狗音乐没有声音怎么办 百度云的视频被净网怎么办 v380用户名或密码错误怎么办 课堂派没签到的怎么办 微信加密忘记了怎么办 视频容量太大上传不了视频怎么办 小米手机打不开主页面怎么办 qq离线文件过期了怎么办 百度云有转存任务正在进行怎么办 港版索尼手机的浏览器怎么办 手机下载文件不能直接打开怎么办