Ajax跨域查询完美解决通过$.getJSON()实现
来源: 阅读:1088 次 日期:2014-09-05 14:52:43
温馨提示: 小编为您整理了“Ajax跨域查询完美解决通过$.getJSON()实现”,方便广大网友查阅!

原因:浏览器安全上做了限制,禁止ajax跨域获得数据。

解决方法:通过jquery提供的$.getJSON()可以跨域获得JSON格式的数据。优点:兼容性强。

Java后台代码:

代码如下:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

String callback =req.getParameter("callback");//jquery生成的自定义函数名

resp.setCharacterEncoding("UTF-8");

resp.setContentType("text/html;charset=utf-8");

PrintWriter out = resp.getWriter();

//返回json格式字符串,注意向前台输出的格式必须为 callback(json格式的字符串);

//callback是jquery生成的自定义函数名,返回这种格式,前台jquery代码会自动替换

//回调函数为此callback函数,从而达到跨域的效果,网上还有其他的跨域方案如:AJAJ

//原理应该也是和此方法一样。缺点是:返回数据量不宜过大,安全性差,建议重要数据不

//要通过这种形式传递。

out.print(callback+"({name:'111',sex:'222'});");

out.flush();

out.close();

}

Js前台调用代码:

代码如下:

$(function(){

//需要传的参数,可以不传。

var data= {param1:"param1",param2:"param2"};

//注意url一定要以callback=?的形式拼接,callback参数名可以自定义,

//但后台必须也要同步获取的参数名

var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';

$.getJSON(url,data,function(backdata){

//其实后台返回的函数已经替换为此函数,所以backdata

//就是你从后台传过来的json对象。

alert(backdata);

});

})

如果有不明白的地方,请留言....

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map