开发者社区> 问答> 正文

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

展开
收起
爱吃鱼的程序员 2020-06-20 19:19:14 410 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    不了解solr,请求到的数据是一个纯JSON格式的话,是不能用JSONP方式调用的,支持JSONP方式的URL返回的一定是js脚本,一般是一句函数调用,百度首页的搜索词联想,返回的形式是这样的:

    jQuery110209772432656027377_1399457477444({"q":"a","p":false,"s":["acfun","apple","angelababy","ai","akb48","appstore","android","adobereader","acg","autocad"]});

    jQuery110209772432656027377_1399457477444相当于你代码里的callback,是客户端页面定义的函数名,JSONP方式会在返回的Javascript代码里面调用这个函数,JSON数据是当做参数传入方法的,而不是直接返回一个JSON

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

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

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

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

    2020-06-20 19:19:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像