使用jsonP实现百度关键词下拉提示

2017-07-07  本文已影响0人  seporga

使用到的百度jsonP接口地址:
http://suggestion.baidu.com/su?wd=关键词(aa)&cb=回调函数名(callback)

使用这个格式请求时,会得到一个回调函数(这里使用的关键词是aa,回调函数名是callback):

callback({q: "aa", p: false,…});
p
:
false
q
:
"aa"
s
:
["aape官网", "aaa", "aabc形式的词语", "aape", "aac", "aae", "aa电池", "aar", "aas", "aabb"]
0
:
"aape官网"
1
:
"aaa"
2
:
"aabc形式的词语"
3
:
"aape"
4
:
"aac"
5
:
"aae"
6
:
"aa电池"
7
:
"aar"
8
:
"aas"
9
:
"aabb"

html代码:

<p>使用jsonP实现百度关键词下拉提示</p>

<input type="text" name="" id="wd" autofocus>

<ul id="ul1">下拉框,用于存放返回的关键词</ul>

CSS代码:

<style>
        p{
            color: #bf6900;
            font-size: 24px;
        }

        #wd{
            border: none;
            padding-left: 5px;
            line-height: 40px;
            font-size: 24px;
            border: 1px solid #aaaaaa;
            border-color: #bf6900;
            width: 394px;
            height: 40px;
            outline: none;
        }

        #ul1{
            padding: 0;
            margin: 0;
            width: 400px;
            border: 1px solid #bf6900;
            display: none;
        }

        #ul1 li a{
            font-size: 24px;
            padding: 5px 0;
            text-decoration: none;
            display: block;
            color: #bf6900;
            padding-left: 5px;
        }

        #ul1 li a:hover{
            color: white;
            background-color: #bf6900;
        }
    </style>

javascript代码:

<script>
        //回调函数,需定义为全局函数
        function callback(data){
            var oUl1 = document.getElementById('ul1');
            var html = '';

            if (data.s.length!=''){
                //将返回的数据插入下拉框中
                oUl1.style.display = 'block';
                for(var i=0;i<data.s.length;i++){
                    html +='<li><a target="#data" href="http://www.baidu.com/s?wd='+data.s[i]+'">'+ data.s[i] +'</a></li>';
                }
                oUl1.innerHTML = html;

            }else{
                //没有匹配的关键词时,隐藏下拉框
                oUl1.style.display = 'none';
            }
        }

        window.onload = function () {
            var ul1 = document.getElementById('ul1');
            var wd = document.getElementById('wd');

            //按键弹起触发jsonP请求
            wd.onkeyup = function () {
                if (this.value!=''){
                    var oScript = document.createElement('script');
                    oScript.src = 'http://suggestion.baidu.com/su?wd='+this.value+'&cb=callback';
                    document.body.appendChild(oScript);
                }else {
                    ul1.style.display = "none";
                }
            }
        }
    </script>
    

效果如下:


效果图
上一篇下一篇

猜你喜欢

热点阅读