博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
菜鸟简述Jquery中Ajax发送post请求及XML响应
阅读量:4587 次
发布时间:2019-06-09

本文共 1866 字,大约阅读时间需要 6 分钟。

在没有出现jquery前,是通过纯手工的方式获取XmlHttpRequest对象来向服务器发送异步请求实现局部刷新。在jquery出现以后我们利用其封装好的对象来实现ajax请求,下面以post请求为例作一个简单介绍:

jQuery.post(url, [data], [callback], [type]),其中url为请求地址,data为待发送的参数及其值,callback为发送成功时的回调函数,type为返回内容的类型(xml、html、text、json等)。为了能够使用jquery中的ajax,首先需在jsp页面中导入juery.js文件,然后在jsp页面中写如下一段js代码:

<script type="text/javascript">

           $(function(){

              $('#s1').change(function(){

                  $('#tips').remove();

                  var carName = $(this).val();

                  $.ajax({

                     url:'car2.do',

                     type:'post',

                     data: 'carName=' + carName,

                     dataType:'xml',

                     success:function(data){

                         //成功之后调用该函数

                         //data:服务器返回的数据,

                         //如果服务器返回的是一个xml文档

                         //需要调用$(data),将xml转换成一个jQuery对象

                         $('#s1').after("<div id='tips'></div>");

                         $('#tips').html('描述:'

                         + $(data).find('desc').text() + ' 价格:'

                         + $(data).find('price').text());

                     },

                     error:function(){

                         //失败调用该函数

                         alert('系统出错');

                     }

                  });

              });

           });

 

</script>

为了能让各位园友看得更直观,jsp页面中还有如下html代码:

<div>

              <select id="s1" style="width:120px;">

                  <option value="cayene">卡宴turbo</option>

                  <option value="x6m">宝马x6m</option>

                  <option value="bb">猎豹</option>

              </select>

</div>

以上为客户端代码,为能够响应请求,我们需在服务器端写好一个Servlet来响应请求,目的是用户选择相应的汽车后能给用户该汽车的描述和价格,并且以xml类型的数据进行返回。服务器端代码如下:

response.setContentType("text/xml;charset=utf-8");

String carName = request.getParameter("carName");

StringBuffer sb = new StringBuffer();

sb.append("<car>");

if(carName.equals("cayene")){

  sb.append("<desc>跑得很快,也很好看</desc>");

  sb.append("<price>1000000</price>");

}else if(carName.equals("x6m")){

  sb.append("<desc>跑得最快,但不好看</desc>");

  sb.append("<price>2000000</price>");

}else{

  sb.append("<desc>白领的最爱</desc>");

  sb.append("<price>200000</price>");

}

sb.append("</car>");

out.println(sb.toString());

服务器端的Servlet是以*.do后缀匹配的形式匹配请求资源路径,当请求资源路径为car2.do时服务器端通过取子串可以将car2取出后作出相应的响应。同时需要注意每次显示服务器端返回的内容时需将之前的内容清空,也就是$('#tips').remove();否则就会有多条描述和价格显示在页面。这样就能实现选择下拉列表中的汽车则显示该汽车的描述和价格。如下图:     

  

转载于:https://www.cnblogs.com/kmyangyang/archive/2012/07/29/2614432.html

你可能感兴趣的文章
H.264编码系统几个比较重要的算法
查看>>
iOS开发-多线程-线程间通讯
查看>>
Python 3 读取和存储Excel数据(应用到接口测试)
查看>>
WPF(二)路由事件2.挂起的事件
查看>>
9.05学习笔记
查看>>
java中队列Queue的使用
查看>>
前端分析与设计7步骤
查看>>
async await 更简洁的异步
查看>>
探究美国多发龙卷风的成因
查看>>
【总结】CI框架 操作 mysql 数据库 分类: php ...
查看>>
Cypress自动化测试系列之二
查看>>
P1 第一单元 class01:神奇的笔
查看>>
[模板]MTT
查看>>
golang Mysql -- Tx
查看>>
iOS开发大神必备的Xcode插件
查看>>
命名管道
查看>>
简单的几个Boost定时器
查看>>
使用天天模拟器开发Android应用
查看>>
c++小学期大作业攻略(一)环境配置
查看>>
【CH1809】匹配统计(KMP)
查看>>