java web的一些特殊用法(一)

1.查看jquery ajax请求的数据的具体格式

很多时候,我们需要查看到ajax返回时的具体格式才知道怎么去解析他。在最原始的ajax写法中,可以通过xmlhttp.responseText查看到ajax请求的原始数据,但使用框架后,这个数据就没法查到了。这里我们想到了一种跳过ajax框架的作法:直接使用链接请求:比如:

 1 $.ajax({
 2         type: "get",//使用get方法访问后台
 3         dataType: "json",//返回json格式的数据
 4         url: "${ctx}/ai/AIAction.do?",//要访问的后台地址
 5         data: "method=get_ai_list",//要发送的数据
 6         success: function(data){//msg为返回的数据,在这里做数据绑定
 7             /*代码体*/
 8                  },
 9         error:function(){
10             alert("error");
11         }
12    });

可以直接使用请求${ctx}/ai/AIAction.do?method=get_ai_list到浏览器地址栏中查看。
顺便说一下,其实ajax请求的原理就是你后台给他什么,就带回来什么,并且是谁请求他,就将结果返回给谁。

2.layer弹出层与jquery不兼容的解决方案

本来只是一个bug,我开始被这个东西搞的很头疼。但后来我一想,为什么不从反面去应他呢,下面就说说这种做法。

<script src="http://res.xiami.net/pc/lay/lib.js"></script>
<script src="${ctx}/layer/layer.min.js"></script>
<script type="${ctx}/js/jquery-1.8.3.js"></script>
function zOpen(totalCount){
		$.layer({
		    type : 2,
		    title : '结帐消息',
		    iframe : {src : '${ctx}/jiezhang.jsp?totalCount='+totalCount},
		    area : ['400px' , '300px'],
		    offset : ['100px',''],
		    time:3
		});
	}

function checkout(totalcount)
	{
		var goodids = document.getElementsByName("GoodsIDs");
		var goodsidstr = "";
		for(var i = 0;i < goodids.length;i++)
		{
			//alert(sortids[i].value);
			goodsidstr += goodids[i].value+',';
		}
		
		goodsidstr = goodsidstr.substring(0,goodsidstr.lastIndexOf(','));
		if(confirm('你确认要支付'+totalcount+'元?'))
		{
			
			$.ajax({
			    url: '${ctx}/good/GoodServlet?action=add_orders&giflag=1&goodsidstr='+goodsidstr,
			 	type: 'post',
			    dataType: 'xml',
			    timeout: 1000,
			    error: function(){
			        alert('校验失败');
			    },
			    success: function(data){
			    	$(data).find("response").each(function(index,ele){
			    		var passed = $(ele).find("passed").text();
			    		if(passed == 'true')
			    			zOpen(totalcount);
			    		else
			    			alert('支付失败');
			    	});
			    }
			});
			setTimeout('reLoad()',6000);
		}
		else
			return;
	}

  注意到这两段代码中都有$,他们是不一样的,第一个是$是来自layer层的,第二是来自jquery的,这个时候,要保持他们的兼容特性

就要注意到<script src="${ctx}/layer/layer.min.js"></script><script type="${ctx}/js/jquery-1.8.3.js"></script>第二个引用本来是错的,但为什么这里可以正常使用呢?主要是利用了浏览器的一个“容错的特性”,他们自动把第二个引用当作正确的引用,还不会报错。

posted @ 2014-04-23 10:47  蜗牛之履  阅读(338)  评论(0编辑  收藏  举报