$.getJSON(
”search!list.action?q=xxcallback=?”,
function(data){
alert(“CallBack Data: ” + data );
}
);
后端:
public void list(){
HttpServletRequest request = getRequest();
String key = URLDecoder.decode(request.getParameter("q"), "utf-8");
String callback = request.getParameter("callback");
String data;
.....
.....
response.getWriter().write(callback + "(" + data + ");");
}
在此必须要用 callback=? 进行跨域调用,jQuery会返回一个JSONP的返回值代替‘?’,实际上传递给后台脚本的应该是类似 ‘&callback=jsonp12126279’。所以需要在后台脚本中截获 callback的参数,然后加在原先的JSON前。(可以理解成是一次验证过程)。
本文介绍了使用JSONP实现跨域请求的方法。前端通过$.getJSON发起请求并将回调函数设置为'?',jQuery会自动替换为回调函数名。后端接收并处理回调参数,将返回的JSON数据包装进回调函数中,完成跨域数据交换。
3569

被折叠的 条评论
为什么被折叠?



