AJax技术

AJAX编程实践(2)

字号+ 作者:H5之家 来源:H5之家 2016-06-28 16:05 我要评论( )

form 用户名:input id=usernameID type=text name=username maxlength=10 / span id=resID/span /form 因为有的浏览器可能会不支持ajax,所以我们需要来判断一个浏览器是否兼容。这里也就是先创建一个ajax对象。 fu

<form > 用户名:<input id="usernameID" type="text" name="username" maxlength="10" /> <span id="resID"></span> </form>
因为有的浏览器可能会不支持ajax,所以我们需要来判断一个浏览器是否兼容。这里也就是先创建一个ajax对象。


function createAJAX(){ var ajax=null; try{ ajax=new ActiveXObject("microsoft.xmlhttp"); }catch(e1){ try{ ajax=new XMLHttpRequest(); }catch(e2){ alert("您的浏览器不支持ajax,请更换浏览器试试!"); } } return ajax; }
然后就是按照前面分享的编码步骤进行:

//定位文本框,同时提供焦点事件 document.getElementById("usernameID").onblur=function(){ //获取文本框中输入的值 var username=this.value.trim(); //如果内容为空 if(username.length==0){ document.getElementById("resID").innerHTML="用户名不能为空"; }else{ //对汉字进行utf-8编码 username=encodeURI(username); var ajax=createAJAX(); var method="GET"; var url="${pageContext.request.contextPath}/servlet/UserServlet?time="+new Date().getTime()+"&username="+username; ajax.open(method,url); ajax.send(null); ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ var tip=ajax.responseText; document.getElementById("resID").innerHTML=tip; } } } } }
这里我们需要用到servlet来做服务器的接收和验证操作。这里是通过get方法来实现的。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); byte[] buf = username.getBytes("ISO-8859-1"); username = new String(buf,"UTF-8"); //System.out.println(username); String tip="<font color='green'>可注册</font>"; if("朱培".equals(username)){ tip="<font color='red'>该用户已存在</font>"; } response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); pw.write(tip); pw.flush(); pw.close(); }
运行Tomcat服务器。通过地址进行访问。

效果如下:当鼠标移开的时候,如果库中有则会提示用户已存在。


若用户不存在,则可以进行注册。


4.2 POST方式

post方式很多都与get方法类似,但是还是有区别的,例如post方法需要设置ajax请求头为post,它会将请求的汉字自动进行utf-8的编码。这里用图片提示为例:

//定位文本框,同时提供焦点事件 document.getElementById("usernameID").onblur=function(){ //获取文本框中输入的值 var username=this.value.trim(); //如果内容为空 if(username.length==0){ document.getElementById("resID").innerHTML="用户名不能为空"; }else{ var ajax=createAJAX(); var method="POST"; var url="${pageContext.request.contextPath}/servlet/UserServlet?time="+new Date().getTime(); ajax.open(method,url); //设置ajax请求头为post,它会将请求的汉字自动进行utf-8的编码 ajax.setRequestHeader("content-type","application/x-www-form-urlencoded"); var content="username="+username; ajax.send(content); ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ var tip=ajax.responseText; var imgElement = document.createElement("img"); //设置img标签的src/width/height的属性值 imgElement.src = tip; imgElement.style.width = "15px"; imgElement.style.height = "15px"; //定位span标签 var spanElement = document.getElementById("resID"); //清空span标签中的内容 spanElement.innerHTML = ""; //将img标签加入到span标签中 spanElement.appendChild(imgElement); } } } } }这段代码的第6布就是将从服务器中读取到的图片进行解析并且显示到span中,也就是我们前面设置的那个html页面。

对于selvet,使用post方法:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String username=request.getParameter("username"); String tip="images/b.jpg"; if("朱培".equals(username)){ tip="images/a.jpg"; } response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); pw.write(tip); pw.flush(); pw.close(); }
效果如下:





五、Ajax案例二:省市级联

关于省市级联的案例非常非常多,这里主要是通过客户端使用ajax进行无刷新拿到服务器中的数据。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评