jQuery_review之通过$.get()和$.post()方法来实现异步加载

    $.get()和$.post()这两个方法,顾名思义,一个就是通过get方法来获取数据,另外一个通过post方法来获取数据。这两个方法在具体有什么区别呢?重点有三个方面的区别,第一个get传送的数据理论在2KB之内,post方法原则上是不受限制的。第二个方面,一个在地址栏上会显示当前的请求内容,这种在有用户名和密码的时候就不好了。另外一个是在请求体当中,这个虽然也不是很安全,但是至少要比GET方法要安全那么一点点了。第三个,其实get方法最初是用来设计请求静态内容的,而POST则是用来提交增删改数据的,只是后来的这个区分没那么明显而已了。

    回头来说     $.get()和$.post这两个方法。这个两个方法都可以接受四个参数,第一个参数是告诉jQuery我要到什么地方去请求数据,第二个参数,是可选参数,是告诉jQuery我的请求数据是什么,这些请求数据会变成请求数据的一部分,主要是用于传递key/value的值到服务端进行处理。第三个参数是回调参数,回调参数只有在调用成功的时候才会调用。这里就有一个问题,如果回调不成功的话,应该怎么办?这时候就应该参考jQuery的全局方法中对于返回异常的处理了。最后一个参数,就是期望服务器传递回来的数据类型,这些数据类型包括但是不限于xml,html,json,script等等内容。尤其注意的是xml,xml这个东西其实和html是同源的,他们的老祖宗估计都是一个。所以,很多原本用于html的jquery方法,都是可以使用到xml上的,比如使用$()这个万能工厂,将返回的xml数据变成一个object对象,使用.find()来找到子元素,使用attr找到属性的值,使用.text()找到元素中的文本值。

    还有一个要注意的是,前端写了期望后端发送的数据是xml,那么后端就应该按照前端的约定来发送数据:response.setContentType("text/xml;charset=UTF-8");

Server端的代码如下:

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String name = req.getParameter("name");
		String address = req.getParameter("address");
		StringBuffer sb = new StringBuffer();
		sb.append("<div><span>hi! nice to meet you! ");
		sb.append(name).append(",(");
		sb.append(address).append("),");
		sb.append("how are you getting along?</span></div>");
		
		StringBuffer xmlSb = new StringBuffer();
		xmlSb.append("<book>")
			 .append("<title>")
			 .append("No ventured No gained")
			 .append("</title>")
			 .append("<publish>")
			 .append("Chinses publish")
			 .append("</publish>")
			 .append("</book>");
		//resp.setContentType("text/html;charset=utf-8");
		resp.setContentType("text/xml;charset=utf-8");
		resp.getWriter().print(xmlSb.toString());
	}


前端的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  	<script type="text/javascript" src="jquery-1.8.3.js"></script>
	<script type="text/javascript">
		$(function(){
			$("#getContentByAjax").click(function(){
				//$.post("test",{name:"czz",address:"address"},callBack,"html");
				//$.get("test",{name:"czz",address:"address"},callBack,"html");
				$.get("test",{name:"czz",address:"address"},callBack,"xml");	
			});
			function callBack(data,textStatus){
				//$("#showText").html(data);
				var title=$(data).find("title").text();
				var publish = $(data).find("publish").text();
				$("#showText").text(title+" "+publish);
			}
		});
  	</script>
  </head>
  <body>
  	<div id="showText"></div>
  	<input type="button" id="getContentByAjax" value="sendAjax">
  </body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值