可定需要查看淘寶界面的結構,按F12查看網頁,此時先清除一下網頁中的數據,讓Network制空,隨后在輸入框中輸入新的內容,比如錢包,數據中會出現新的數據。點擊及查看藍色方框中的內容
點擊之后,你可以查看要訪問的地址,及響應的結果
從第二步訪問到的路由地址,會是我們調用的接口,如下圖;
最后響應給我們的結果就是第三步的內容,下面是我給的源碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="./Pycharm/jq/1.5.2/jquery-1.5.2.min.js"></script>
</head>
<body>
<input type="text" value="">
<ul></ul>
<script>
$(function () {
$("input").keyup(function () {
var $v = $(this).val();
$.ajax({
type:"post",
url:"https://suggest.taobao.com/sug?code=utf-8&callback=jsonp392&k=1&area=c2c&bucketid=20",
data:{
q:$v
},
async:false,
dataType:"jsonp",
success:function(res){
console.log(res);
$("ul").empty();
$.each(res.result,function(i,v){
var $li = $("<li>");
console.log(i)
console.log(v)
$li.html(v[0]);
$li.appendTo($("ul"));
})
}
})
})
})
</script>
</body>
</html>
說明:對於第二步,復制的請求地址:
https://suggest.taobao.com/sug?code=utf-8&q=qian&_ksTS=1517635754012_391&callback=jsonp392&k=1&area=c2c&bucketid=20中,在代碼中將&q=qian&_ksTS=1517635754012_391去除,應為后續會用ajax繼續傳送ajax的值,
而對於請求地址,也可以這樣寫
url:"https://suggest.taobao.com/sug?code=utf-8&callback=?",
對於jsonp:
JSONP(json with Padding)是json的一種使用模式,可用於解決主流的瀏覽器跨域數據訪問的問題。(不支持post請求)
核心:通過script標簽的src屬性,進行域名的包裝來完成跨域請求數據的而訪問,src來模擬數據的來源,通過和要訪問的服務器域名一致,進行同源數據的訪問,間接實現跨域數據的訪問
Json和jsonp的區別:
json是一種數據格式,jsonp是數據訪問的方式
原生js跨域:原生js中,通過動態增加script標簽,指定src屬性進行數據的跨域訪問
另加一個以前編寫的,這個不需要修改jq地址,jq是一個地址,可以直接使用,如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<style>
input{
width:400px;
height: 40px;
}
ul{
margin: 0;
padding: 0;
list-style: none;
width: 400px;
}
ul li{
height: 38px;
width:100%;
line-height: 38px;
border-bottom:1px dotted #ccc;
}
</style>
</head>
<body>
<!--https://suggest.taobao.com/sug?code=utf-8&q=aaa&callback=jsonp876-->
<input type="text" value=""/>
<ul>
</ul>
</body>
<script>
$(function(){
$("input").keyup(function(){
var $v = $(this).val();
$.ajax({
type:"post",
url:"https://suggest.taobao.com/sug?code=utf-8&callback=?",
async:true,
data:{
q:$v
},
dataType:"jsonp",
success:function(res){
console.log(res);
$("ul").empty();
$.each(res.result,function(i,v){
var $li = $("<li>");
console.log(i)
console.log(v)
$li.html(v[0]);
$li.appendTo($("ul"));
})
}
});
});
});
</script>
</html>
結果: