jsonp百度下拉框

作者: 打完这仗回家结婚 | 来源:发表于2017-07-22 19:04 被阅读0次

废话不多说 ,先贴代码

代码块

  <body>
    <input type="text" />
        <ul></ul>
       <script>
            var input=document.querySelector("input");
            var ul=document.querySelector("ul");
            input.onclick=function(){
                var script=document.createElement("script");
                script.src='https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+this.value+'&cb=fn1';
                document.body.appendChild(script);
                document.body.removeChild(script);
            }
            
            function fn1(data){
                                 //我们需要的data参数已经通过数据库传入了函数,不需要我们另行传入。
                                console.log(data);
                var str='';
                                 //data.s在最后一张图可以明了
                if(!data.s.length){
                    ul.style.display='none';
                    ul.innerHTML='';
                }else{
                    ul.style.display='block';
                    
                    for(var i=0;i<data.s.length;i++){
                        str+='<li>'+data.s[i]+'</li>';
                    }
                    
                    ul.innerHTML=str;
                }
            };
            
        </script>
    </body>

其实就是一个通过访问百度服务器数据,然后展示在本地页面上的一个jsonp。
首先我们要拿到访问百度服务器的一个网址

0.4.png
右击,copy,copy link address。
得到如下:
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=&json=1&p=3&sid=1427_21109_18560_17001_23536_22160&req=2&bs=%E5%90%91%E6%97%A5%E8%91%B5&csor=0&cb=jQuery1102022528784831170223_1500709212726&_=1500709212727
但是我们不需要这么多,精简一下:
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+this.value+'&cb=fn1

参数 值
wd 关键字
cb 回调函数

输入的时候回去请求百度的数据,他是放在百度的服务器中,我们在本机,这就是跨域,用到了jsonp。
jsonp出来之后特别流行,而且操作方便,ajax操作的时候可能会出现很多错误,jsonp不会。
简单说就是一个get请求,就是一个地址 。
就是一个script标签,javascript文件,拿到文件之后通过dom或者javascript的操作方法把数据展示到页面中,这就是jsonp的数据交互。

相关文章

网友评论

    本文标题:jsonp百度下拉框

    本文链接:https://www.haomeiwen.com/subject/yjcjhxtx.html