为了账号安全,请及时绑定邮箱和手机立即绑定

jsonp跨域改写

$.ajax({
   type:'get',
   crossDomain:true,
   url:'http://api.bing.com/qsonhs.aspx?q='+searchText,
   dataType:'jsonp',
   async:true,
   success:function(data){
        var date=data.AS.Results[0].Suggests;
       console.log(date);
       var html='';
       for (var i = 0; i<date.length; i++) {
           html+= '<li>'+date[i].Txt+'</li>';
       }
       $('#search-result').html(html);
        $('#search-suggest').show().css({
        top:$("#search-form").offset().top+$("#search-form").height()+10,
        left:$("#search-form").offset().left,
        position: 'absolute'});
   }
})

用jsonp跨域还是不能显示出来,不过data信息能获取了,这是为什么?

正在回答

3 回答

不太清楚,不过搜了下,可以改的参数应该是jsonpCallback。type=cb这里是不是bing的服务器规定的?

$.ajax({
				url:'http://api.bing.com/qsonhs.aspx?type=cb&cb=cab&q='+searchText,
				dataType:'jsonp',
				jsonp:'cb',
				jsonpCallback:'cab',
				success:function(d){
					var d=d.AS.Results[0].Suggests;
					var html='';
					for(var i=0;i<d.length;i++){
						html+='<li>'+d[i].Txt+'</li>';
					}
					$('#result').html(html);
					$('#search-result').show().css({'left':resultleft+'px','top':resulttop+'px'});
				}
			});


0 回复 有任何疑惑可以回复我~

改成这样就可以了:

url:"http://api.bing.com/qsonhs.aspx?type=cb&q="+searchText,
dataType:'jsonp',
jsonp:'cb',

奇怪的是,我同时修改  cb ,这个参数,改成其他参数,如 callback 时,却出现了

Refused to execute script from 'http://api.bing.com/qsonhs.aspx?type=callback&q=3&callback=jQuery1102013778116717003286_1455000651256&_=1455000651257' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

这样的错误,按照jsonp的原理,修改这个参数应该是没问题的。不知哪里出现问题。如果有同学知道的话,请告我一声~大家一起学习~

1 回复 有任何疑惑可以回复我~

描述不是很清楚,或许你应该了解一下jsonp的原理。基于<script>实现的跨域函数调用。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
搜索框制作
  • 参与学习       66041    人
  • 解答问题       431    个

本课程从简入深讲解搜索框的制作,学习JQ与JS实现Ajax技术的不同点

进入课程

jsonp跨域改写

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信