`
eoasis
  • 浏览: 76863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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请求了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics