AJAX操作JS代码

AJAX操作JS代码

 

其实这个代码不是本人原创,只是在前人的基础上做了一些比较细微的修改。加之最近在做一个关于AJAX应用的学习交流,所以在这里附上这个封装的源代码。

 

对于这个JS的ajax封装,本人认为值得学习是arrachEvent的应用,以及对XMLHttpRequest的声明。

 

window.XMLHttpRequest 主要用于验证浏览器是否IE7/8/9及其他非IE浏览器,而window.ActiveXObject则主要用于验证IE6/5及以下版本。如果把window.ActiveXObjec写在第一个if判断,那么碰到IE7/8/9的时候,则会应用后一种方式创建XMLHttpRequest对象。我们可以理解,IE7/8/9是包含window.ActiveXObjec/XMLHttpRequest属性的浏览器,用哪种方式都能创建到对应的对象。

 

attachEvent("eventType",function) 是window下的一个……其实我不知道它是属性还是方法,主要是它的调用方式是当eventType事件发生的时候,调用function方法。比如说:

document.getElementById("submitButton").attachEvent("onclick",function) 标示在id为submitButton的对象(这个对象不一定要是按钮)发生鼠标点击事件的时候,执行function函数。

 

其他一些成熟的地方:

xmlHttpRequest.send(queryString);用于传递AJAX请求的参数。很多时候我们都喜欢直接在URL后面加一个?然后把参数用一个字符串增加在URL的后面。这种方式省时省事,并且send(null)就可以了。可是我们知道,请求URL有一个长度的限制问题,假如URL请求超过了一定的限制,那么后面的字符串会默认被清除掉的。把参数通过send的方式传递,这是一个良好的AJAX应用习惯。

var xmlHttp; function u_reg(field) { var name=field.value; if(""!=name) { xmlHttp=createXmlHttpRequest(); var url="loginAction!reg?username="+name; xmlHttp.open("GET",url,true); xmlHttp.onreadystatechange=userName; xmlHttp.send(null); } else { return; } } function changeDrop(field) { var typeid=field.value; if(""!=name) { xmlHttp=createXmlHttpRequest(); var url="productAction!reg?username="+typeid; xmlHttp.open("GET",url,true); xmlHttp.onreadystatechange=initType; xmlHttp.send(null); } else { return; } } function createXmlHttpRequest() { if(window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); if(xmlHttp.overideMimeType) { xmlHttp.overidMimeType("text/xml"); } } else if(window.ActiveXobject) { try { xmlHttp=new ActiveObject("Msxml2.XMLHTTP"); } catch(e) { xmlHttp=new ActiveObject("Microsoft.XMLHTTP"); } } if(!xmlHttp) { alert("您的浏览器不支持创建XMLHTTPRequest对象!"); } return xmlHttp; } function userName() { if(xmlHttp.readyState==4) { if(xmlHttp.status==200) { var u_name=document.getElementById("reg_name"); var uId=xmlHttp.responseText; if(uId=="1") { u_name.innerHTML="用户已存在!"; } else { u_name.innerHTML=""; } } else { alert("请求错误,无法验证用户名是否存在!错误代码:"+xmlHttp.status); } } } function initType() { if(xmlHttp.readyState == 4) {//4:表示Ajax引擎初始化成功 if(xmlHttp.status == 200) {//http协议成功 var typeSelect = document.getElementById("typeid"); var deskLength = typeSelect.options.length; for(var j = deskLength;j > 0;j--) { typeSelect.options.remove(j); } var content8 = xmlHttp.responseText; eval(content8); }else { alert("请求失败,错误码=" + xmlHttp.status); } } } public Object reg() {// 用户注册验证由Ajax实现 OutputStream os = null; PrintWriter pw = null; try { HttpServletResponse res = ServletActionContext.getResponse(); os = res.getOutputStream(); pw = new PrintWriter(os); if (this.userServices.checkUsername(this.getUsername())) { pw.print(1); } else { pw.print(0); } pw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { pw.close(); os.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值