欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Ajax跨域查询完美解决通过$.getJSON()实现

程序员文章站 2022-05-18 08:31:42
原因:浏览器安全上做了限制,禁止ajax跨域获得数据。 解决方法:通过jquery提供的$.getjson()可以跨域获得json格式的数据。优点:兼容性强。java后台代...
原因:浏览器安全上做了限制,禁止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);
});
})

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