jsonp 跨域 解析返回结果报错

GodByeWord 发布于 2014/05/07 17:25
阅读 4K+
收藏 0

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的格式化,有经验的大侠求指点.

加载中
0
con
con

不了解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

0
con
con

你这个地址不支持JSONP啊,请求来的数据是JSON,浏览器要把它当做Javascript来解析,遇到“:”就报错了。

如果支持JSONP,应该返回Javascript代码,在代码里面调用callback函数才对

0
GodByeWord
GodByeWord

补充一下:现在用solr在做搜索词提示功能,已经实现了;只是无法达到像Bing、Google那种正对地区的效果。所以从URL你也看出来了,我们想利用Bing搜索。我想问下solr返回的也是json我们可以解析,Bing是因为什么原因会有问题?

0
GodByeWord
GodByeWord

灰常感谢你详细的解答,结贴!

返回顶部
顶部