Java-JSON跨域问题

发布于 2017-02-21 23:19:50 字数 204 浏览 1278 评论 2

这是客户端获取JSON的

jQuery.getJSON("http://122.227.214.107:8844/jsonInterface/addUser?callback=?",function(data){
alert("11111111111111");
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-05-07 13:57:29

服务端返回的格式如下:
callbackValue({'key':'value'})
用一个括号把你要返回的JSON格式的数据(对象或者数组)括起来,然后前边加上callbackValue
callbackValue 就是你上面getJSON中传过去的callback的值

你只要保证服务器端返回的是上面这个格式的数据即可

清晨说ぺ晚安 2017-04-19 01:44:48

跨域调用有JSONP和跨站脚本两种方法实现
JSONP其实不是AJAX,是通过脚本往head里面添加一个<script>标签,src是一个跨域调用的地址,这个调用返回的不是JSON,而是一段javascript,一般是:jsonpcallback(({data:"abc",data2:"def"}));这种样子的
然后你在你的程序里面定义一个function jsonpcallback(data){}就可以接收数据了。

jQuery里面的JSONP格式是getJSON里面的url里有"callback=?",这个?在实际调用的时候会替换成别的某个值,服务器端要根据这个值来返回,不能是一个写死的值。也就是说服务器端要读callback这个QueryString,比如说callback=jsonp123的时候就要输出:
jsonp123({data:"abc",data2:"def"});
这样的代码。
另外最好添加上http头:header('Content-Type: application/javascript');

如果希望用固定的回调函数名,可以用$.ajax函数,里面可以设置的参数更多,参考jsonp和jsonpCallback两个参数。

跨站脚本则更直接一点,直接在网页上添加一个来自目标站的脚本:
<script type="javascript" src="http://122.227.214.107:8844/cross.js"/>
这个脚本里面访问http://122.227.214.107:8844/不会受到跨域限制。因此可以在里面加一个函数:
function AnyWhereAjax(url, data, callback)
{
$.post(url,data,callback);
//$.getJSON(url,data,callback);
}
然后在外面的脚本中使用AnyWhereAjax调用:
AnyWhereAjax(crossDomainUrl, data, function(data){...});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文