1.查看jquery ajax请求的数据的具体格式
很多时候,我们需要查看到ajax返回时的具体格式才知道怎么去解析他。在最原始的ajax写法中,可以通过xmlhttp.responseText查看到ajax请求的原始数据,但使用框架后,这个数据就没法查到了。这里我们想到了一种跳过ajax框架的作法:直接使用链接请求:比如:
$.ajax({
type: "get",//使用get方法访问后台
dataType: "json",//返回json格式的数据
url: "${ctx}/ai/AIAction.do?",//要访问的后台地址
data: "method=get_ai_list",//要发送的数据
success: function(data){//msg为返回的数据,在这里做数据绑定
/*代码体*/
},
error:function(){
alert("error");
}
});
可以直接使用请求${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>第二个引用本来是错的,但为什么这里可以正常使用呢?主要是利用了浏览器的一个“容错的特性”,他们自动把第二个引用当作正确的引用,还不会报错。