亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用jsonp解決跨域,請求成功,也沒報錯,但是沒有數據渲染

<div class="wrapper">

<form action="" class="search-form" id="searchForm">

<input class="search-text" id="searchText" type="text" placeholder="搜索關鍵字[提示]" />

<input id="submit" class="search-submit" type="submit" value="搜索" />

</form>

<ul class="suggest" id="suggest">

<!-- <li class="suggest-item">后視鏡看韓劇</li>

<li class="suggest-item">撒的v阿薩德</li>

<li class="suggest-item">撒的v的發v</li> -->

</ul>

</div>



.wrapper,.suggest{

width: 400px;

}

.wrapper{

margin: 0 auto;

/*position: relative;*/

}

.search-form{

height: 42px;

box-sizing: border-box;

display: flex;

justify-content: space-between;

align-items: center;

}

.search-text,.search-submit{

height: 42px;

font-size: 14px;

padding: 0 6px;

box-sizing: border-box;

margin: 0;

border: none;

outline: none;

}

.search-text{

width: 80%;

color: #000;

background-color: #f0f0f0;

}

.search-submit{

width: 20%;

background-color: #4395ff;

color: #fff;

}


.suggest{

/*position: absolute;

top: 42px;

left: 0;*/

list-style-type: none;

margin: 0;

padding: 0;

box-sizing: border-box;

border: 1px solid #ccc;

border-top: none;

display: none;

}

.suggest-item{

font-size: 14px;

color: #666;

line-height: 30px;

margin: 0;

padding:6px;

box-sizing: border-box;

cursor: pointer;

}

.suggest-item:hover{

background-color: #f0f0f0;

text-decoration: underline;

}





window.onload=function(){

var searchForm=document.getElementById('searchForm'),

searchText=document.getElementById('searchText'),

suggest=document.getElementById('suggest');


/**跨瀏覽器事件處理

* 參數1:元素id

* 參數2:綁定類型事件(click keyUp keyDown)

* 參數3:響應的回調函數

*/?

var addEvent=function(id,type,handler){

var element=document.getElementById(id)||document;

if(element.addEventListener){//DOM 二級(非 IE 瀏覽器) 綁定兩個以上的事件均可拿到(alert(1) alert(2)兩個均可拿到)

element.addEventListener(type, handler, false);

}else if(element.attachEvent){//低版本瀏覽器(IE9以下)

element.attachEvent('on'+type,handler);

}else{//DOM 零級 綁定兩個以上的事件只可拿到最后一個事件(alert(1) alert(2)只拿到alert(2))

element['on'+type]=handler;//element.onclick === element['onclick']

}

};


addEvent('searchText','keyup',function(){//keyup當輸入的時候請求數據進行展示

var searchVal=searchText.value;


/* ++++++++++ jsonp實現跨域(原理:動態創建script標簽) ++++++++++ */

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

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

? ? ? ? script.setAttribute('src', url);

? ? ? ? // 把script標簽加入body,此時調用開始

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


? ? ? ? suggest.style.top=getElementTop(searchForm)+42+'px';//42:輸入框的height

suggest.style.left=getElementLeft(searchForm)+'px';

suggest.style.position='absolute';

suggest.style.display='block';

});

? ? function cb(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 class='suggest-item'>" + data[i].Txt + "</li>"

? ? ? ? }

? ? ? ? suggest.innerHTML = html;

? ? };


? ??

function getElementLeft(element){//元素距離瀏覽器左邊的距離

var actualLeft=element.offsetLeft,//offsetLeft:獲得距離父元素(瀏覽器/容器)左邊的距離?

current=element.offsetParent;

while (current!==null) {

actualLeft += current.offsetLeft;

current=current.offsetParent;

}

return actualLeft;

}

function getElementTop(element){//元素距離瀏覽器上邊的距離

var autulTop=element.offsetTop,

current=element.offsetParent;

while(current!==null){

autulTop += current.offsetTop;

current=current.offsetParent;

}

return autulTop;

}

}


正在回答

1 回答

https://img1.sycdn.imooc.com//5b2b67e30001ae3a07530425.jpg

你的實現跨域這個方法我不知道對不對,但是我標注出來的這幾個地方是有問題的,你要先通過id獲取dom元素再通過value取值,你大概是手誤直接用id取值了.............

0 回復 有任何疑惑可以回復我~
#1

qq_巧詐不如絀誠_0 提問者

那幾個地方已經修改,解決跨域的方法不對,謝謝
2018-06-21 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
搜索框制作
  • 參與學習       66022    人
  • 解答問題       463    個

本課程從簡入深講解搜索框的制作,學習JQ與JS實現Ajax技術的不同點

進入課程

使用jsonp解決跨域,請求成功,也沒報錯,但是沒有數據渲染

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號