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

用JS怎么实现JSONP跨域请求啊?求代码和讲解

用JS怎么实现JSONP跨域请求啊?求代码和讲解

正在回答

5 回答

这是用jsonp访问豆瓣图书公开api

<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <title>豆瓣图书</title>

</head>

<body>


<script>


function show( data ){

  console.log( data );

}


</script>

<script src="https://api.douban.com/v2/book/4866934?callback=show"></script>

</body>

</html>


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

原生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 回复 有任何疑惑可以回复我~

跨域请求三种方法:

   1.第三方服务器端添加header('Access-Control-Allow-Origin:*');

   2.通过跨域访问资源的标签:

  a标签  img标签   iframe标签   link标签

  script标签

  3.服务器代理的方式:curl

curl : 相当于是服务器端的 XMLHttpRequest() (实际 curl 比 XMLHttpRequest()要强大太多了)。

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

jsonp : 在远程服务器上输出一个调用函数的字符串代码,利用script加载文本信息会自动解析的特性来将远程服务器输出的字符串形式函数调用直接解析成函数执行语句,从而实现在远程服务器上调用本地函数的目的。


  只要能在远程服务器上调用到本地函数,就可以把远程服务器的数据,以参数形式传送到本地页面中。


 

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

JSON.parse('{"name":"xiaomi"}'):JSON.parse()

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

举报

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

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

进入课程

用JS怎么实现JSONP跨域请求啊?求代码和讲解

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