jsonp 跨域 解析返回结果报错
1.测试代码如下:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body >
<input type="button" onclick="callBing()" value="load"/>
</body>
<script type="text/javascript">
function callback(data) {
alert("s");
}
function callBing(){
var JSONP=document.createElement("script");
JSONP.type="text/javascript";
JSONP.src="http://bj1.api.bing.com/qsonhs.aspx?mkt=zh-CN&q=a&jsonp=callback";
document.getElementsByTagName("head")[0].appendChild(JSONP);
}
</script>
</html>
2.错误信息如下:
Uncaught SyntaxError: Unexpected token :
3.返回的数据没有问题,可以通过json tool的格式化,有经验的大侠求指点.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
灰常感谢你详细的解答,结贴!
补充一下:现在用solr在做搜索词提示功能,已经实现了;只是无法达到像Bing、Google那种正对地区的效果。所以从URL你也看出来了,我们想利用Bing搜索。我想问下solr返回的也是json我们可以解析,Bing是因为什么原因会有问题?
你这个地址不支持JSONP啊,请求来的数据是JSON,浏览器要把它当做Javascript来解析,遇到“:”就报错了。
如果支持JSONP,应该返回Javascript代码,在代码里面调用callback函数才对
不了解solr,请求到的数据是一个纯JSON格式的话,是不能用JSONP方式调用的,支持JSONP方式的URL返回的一定是js脚本,一般是一句函数调用,百度首页的搜索词联想,返回的形式是这样的:
jQuery110209772432656027377_1399457477444({"q":"a","p":false,"s":["acfun","apple","angelababy","ai","akb48","app store","android","adobe reader","acg","autocad"]});
jQuery110209772432656027377_1399457477444相当于你代码里的callback,是客户端页面定义的函数名,JSONP方式会在返回的Javascript代码里面调用这个函数,JSON数据是当做参数传入方法的,而不是直接返回一个JSON