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

跨域请求问题 求教

bing-search.html:1 XMLHttpRequest cannot load http://api.bing.com/qsonhs.aspx?q=a. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.    有问题    不知道怎么解决啊    各位谁能帮帮我啊

正在回答

2 回答

原生JS实现JSONP:

addEvent('search-input-text', 'keyup', function() {

        var searchText = getDOM("search-input-text").value;

        //供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)

        //其实参数都是前端和后台程序员规定的,前端传过去,后端判断获取即可。

        var url = "http://api.bing.com/qsonhs.aspx?type=cb&cb=jsonpcallback&q=" + searchText;

        var script = document.createElement('script');

        script.setAttribute('src', url);

        // 把script标签加入body,此时调用开始        

        document.getElementsByTagName('body')[0].appendChild(script);

        getDOM('search-suggest').style.top = getElementTop(getDOM('search-form')) + 38 + 'px';

        getDOM('search-suggest').style.left = getElementLeft(getDOM('search-form')) + 'px';

        getDOM('search-suggest').style.position = 'absolute';

        getDOM('search-suggest').style.display = 'block';        

    });


    function jsonpcallback(data) {

        var data = data.AS.Results[0].Suggests;

        var html = "";

        console.log(data);

        var html = "";

        for (var i=0;i<data.length;i++) {

            html += "<li>" + data[i].Txt + "</li>"

        }

        getDOM('search-result').innerHTML = html;

    };


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

跨域导致的同源策略安全问题,因为你的页面跟http://api.bing.com/这个域名不一样被拒绝访问,可以使用jsonp解决,或者把你的页面部署成http://api.bing.com/bing-search.html

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

举报

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

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

进入课程

跨域请求问题 求教

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