前端:
$.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前。(可以理解成是一次验证过程)。