jQuery getJSON 跨域防缓存调用操作 (原)

jQuery提供的getJSON方法在进行跨域调用时,只需要在调用地址后面加上参数jsoncallback=?即可。

客户端调用代码:

$.getJSON(
		"http://www.XXXX.com/getJSON.jsp?jsoncallback=?",
		{A:1, B:2, rand:Math.random()},
		function(data){
			alert(data);
		}
	);

 

其中A、B是需要传递的其它参数,而rand参数则是防止调用缓存而增加的随机数参数。

 

如果你认为这样就搞定了,那可就错了。因为jsoncallback=?中的问号会被Query自动替换成其他的回调方法的名称,服务器先接受参数jsoncallback,然后把jsoncallback的值作为JSON数据方法名称返回。

 

服务器端代码(getJSON.jsp):

String A_val = request.getParameter("A");
String B_val = request.getParameter("B");
String jsoncallback = request.getParameter("jsoncallback");

if(jsoncallback != null){
	out.print(jsoncallback+"(");
}
%>
{"A":A_val,"B":B_val,"C":3}
<%
if(jsoncallback != null){
	out.print(")");
}
%>

 

现在再访问getJSON.jsp应该返回:?({"A":1,"B":2,"C":3}) 这样客户端就可以正确处理此次getJSON请求了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值