AJAX学习笔记02

 

AJAX学习笔记02

学习课程:

学习内容

相关文件

通过XMLHttpRequest对象手动实现AJAX

AjaxServlet.java

verifyOwn.js

verifyOwn.jsp

通过XMLHttpRequest对象接受与处理XML数据

AjaxXml.java

verifyXml.js

verifyXml.jsp

使用JQuery接受和处理XML数据

AjaxXml.java

verifyXml-jquery.js

verifyXml-jquery.jsp

学习步骤:

说明:

Servlet文件 AjaxServlet.java对应的URL为servlet/AjaxServlet

Servlet文件 AjaxXml.java对应的URL为servlet/AjaxXml

特别提醒:JavaScript代码区分大小写

JSP页面的代码都一样,只不过在调用JS代码文件上有区别

 

  1. <scripttypescripttype="text/javascript" src="jslib/verifyOwn.js"></script>
  2. <input type="text" id="username" name="username"/>
  3. <input type="button" id="submit" value="提交" onclick="verify()"/> 
  4. <div id="result"></div>

 

 1.通过XMLHttpRequest对象手动实现AJAX

AjaxServlet.java文件中doPost方法的代码

 

  1. request.setCharacterEncoding( "utf-8" );
  2. response.setContentType("text/html;charset=utf-8");
  3. PrintWriter out = response.getWriter();
  4. String s = request.getParameter( "username" );
  5. out.print( "返回结果:" + s );

 

VerifyOwn.js文件的所有代码

  1. var xmlhttp = null;//定义成全局变量,可以在回调函数中进行调用
  2. function verify(){
  3. //1.使用DOM方式获取文本框中的值
  4. var userName = document.getElementById("username").value;
  5. //2.创建XMLHttpRequest对象
  6. //需要针对IE和其它类型的浏览器建立这个对象的不同方式写不同的代码
  7. if ( window.XMLHttpRequest ){//如果这个对象存在
  8. //针对FireFox,MOzillar,Opear,Safari,IE7,IE8这些浏览器
  9. xmlhttp = new XMLHttpRequest();
  10. //对于某些特殊浏览器回穿数据是有BUG,进行修正的代码如下
  11. if ( xmlhttp.overrideMimeType ){
  12. xmlhttp.overrideMimeType("text/xml");
  13. }
  14. else if ( window.ActiveXObject ){  //Active控件
  15. //针对IE5,IE5
  16. //两个可以用于创建XMLHttpRequest对象的控件名称,保存在一个js的数组中
  17. var activexName = ( "MSXML2.XMLHTTP" ,"Microsoft.XMLHTTP" );
  18. //= new ActiveXObject("");
  19. for ( var i = 0; i < activeName.length; i++ ){
  20. //取出一个空间名进行创建,如果创建成功,种植
  21. //如果创建失败,则抛出异常,然后可以继续循环,继续尝试创建
  22. try {
  23. xmlhttp = new ActiveXObject( activeName[i] );
  24. catch ( e ) {
  25. }
  26. }
  27. }
  28. //确认XMLHttpRequest对象成功
  29. if ( !xmlhttp ){
  30. alert("XMLHttpRequest创建失败。");
  31. else {
  32. //IE7.0弹出信息框"[Object]"表示表用成功
  33. alert( xmlhttp );
  34. }
  35. //3.注册回调函数
  36. //需要的是把回调函数的函数名注册个xmlhttp对象,如果加入括号就调用该函数
  37. //,将函数的返回值注册给该对象
  38. xmlhttp.onreadystatechange = callback;
  39. //4.设置连接信息
  40. //第一个参数表示http的请求方式,支持所有的请求方式,主要使用get和post
  41. //第二个参数表示请求的URL地址,get方式请求的参数也在URL中
  42. //第三个参数表示是采用同步还是异步方式交互,默认为true
  43. //注:第二个参数传递的userName是在JavaScript中定义的变量不是页面中的Id
  44. //xmlhttp.open("GET" ,"servlet/AjaxServlet?username="+userName      //, true );
  45. //5.发送数据,开始和服务器进行交互,设置为null,get方式要传递的数据都在URL中设置了,不需 
  46. //要单独设置。如果采用同步方式,则在此处暂停,等待从服务器端传递来信息
  47. //异步方式下,send不会暂停,而是向下执行
  48. //xmlhttp.send( null );
  49. //下面是采用Post方法进行提交数据
  50. xmlhttp.open( "POST" , "servlet/AjaxServlet" , true );
  51. xmlhttp.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded" );
  52. xmlhttp.send( "username=" + userName );
  53. }
  54. //定义回调函数
  55. function callback(){
  56. //6.判断XMLHttpRequest交互完成,并且判断http响应是成功的,才进行接受。
  57. if ( xmlhttp.readyState == 4 ){ //交互状态一共有5中从0到4,状态为4表示完成
  58. if ( xmlhttp.status == 200 ){ //判断http的交互是否成功 ,返回代码为200,表示成功
  59. //获取服务器端返回的数据,有两种形式
  60. //1.存文本数据
  61. var responseText = xmlhttp.responseText;
  62. //将数据显示到页面上
  63. //通过dom的方式找到div标签将所对应的元素节点
  64. var divNode = document.getElementById( "result" );
  65. //设置元素结点的html内容
  66. divNode.innerHTML = responseText;
  67. }
  68. }
  69. }

 2.通过XMLHttpRequest对象接受与处理XML数据

AjaxXml.java中doPost方法的代码,让数据以XML的形式返回到客户端

  1. response.setContentType("text/xml;charset=utf-8");
  2. request.setCharacterEncoding( "utf-8" );
  3. PrintWriter out = response.getWriter();
  4. StringBuffer s = new StringBuffer();
  5. s.append( "<message>" );
  6. String param =  request.getParameter( "username" );
  7. if ( (null == param) || "".equals(param.trim()) ){
  8. s.append( "获取数据为空" ).append( "</message>" );
  9. else {
  10. s.append( param ).append( "</message>" );
  11. }
  12. out.println( s.toString() );

 

verifyXml.js文件中回调函数的主要代码,其他的代码与上面的一样

注:domObj.getElementsByTagName( "message" );此句代码是Elements不是Element

  1. //通过DOM方式获取服务器端返回的数据
  2. var divNode = document.getElementById( "result" );
  3. //使用responseXML的方式来接受XML数据对象的DOM对象
  4. var domObj = xmlhttp.responseXML;
  5. //首先找到message标签对应的元素节点,返回一个数组类型
  6. var messageNode = domObj.getElementsByTagName( "message" );
  7. //通过判断messageNode的长度来判断正确性
  8. if ( messageNode.length == 0 ){
  9. divNode.innerHTML = "获取数据错误。";
  10. else {
  11. //寻找标签中的文本内容,获取第一个元素,获取元素中的内容
  12. var result = messageNode[0].firstChild;
  13. var responseText = result.nodeValue;
  14. //设置元素结点的html内容
  15. divNode.innerHTML = responseText; 
  16. }

 

 3.使用JQuery接受和处理XML数据

这个实例只需要修改js页面代码就可以了

在对这个实例进行调试的时候发现一个现象

这次居然支持中文了,是不是因为接受和处理的是XML数据呢?

  1. function verify(){
  2. //1.获取文本框中的内容,返回类型为JQuery
  3. var jqueryObj = $("#username");
  4. var userName = jqueryObj.val();
  5. //使用jquery的XMLHttpRequest对象POST请求的封装
  6. $.ajax( {
  7. type : "POST" , //请求方式
  8. url : "servlet/AjaxXml" ,  //服务器端URL地址
  9. data : "username=" + userName , //发送的数据
  10. dataType : "xml" ,  //预期服务器返回的数据类型
  11.  //定义交互完成,并且服务器正确返回数据时调用的回调函数
  12. success : callback 
  13. });
  14. }
  15. //回调函数
  16. function callback( data ){
  17. //需要将data这个DOM对象中的数据解析出来
  18. //首先需要将dom的对象中的数据解析出来
  19. var jqueryObj = $( data );
  20. //获取messsage节点
  21. var message = jqueryObj.children();
  22. //获取文本内容
  23. var text = message.text();
  24. var resultObj = $("#result");
  25. //4.将服务器端返回来的数据动态显示到页面上
  26. resultObj.html( text );
  27. }

附件信息:

javascript中简单对象的定义方法

var obj = {};

为对象添加属性

var obj = { name:"123" , age:20 };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值