相关文章
JavaWeb购物系统 | JavaWeb购物系统 |
JavaWeb购物系统(七)购物系统主页,商品的管理 | JavaWeb购物系统(七)购物系统主页,商品的管理 |
这是购物系统的一个
补充
,因为在逛淘宝、京东等这些购物网站的,还有很多搜索网站搜索框的时候,都会有这个联想词
。联想词
可以提高用户的体验。我们这里使用的是淘宝
的API接口
,只是显示了它的json
结果,不能点击跳转。
添加这个功能的目的是:想让这个系统更加的像真正的购物网站(虽然很有难度,虽不能至,心向往之
。)下面我们正式来讲解:👇
*📌html代码
<%--联想词--%>
<nav class="navbar navbar-light bg-light" style="width: 500px">
<div class="container-fluid">
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search" id="searchText">
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1" style="margin-top: 38px;width: 200px"> ul>
<button class="btn btn-outline-success" id="search">Searchbutton>
form>
div>
nav>
📌javaScript代码
// 联想词
$("#searchText").on('input', function() {
var kw = $("#searchText").val();
var htmlAdd = '';
$.ajax({
url: "https://suggest.taobao.com/sug?k=1&area=c2c&q="+ kw +"&code=utf-8&ts=1668177833880",
type: "get",
success: function (data) {
for (var i = 0;i<=data.result.length/2;i++){
htmlAdd += ` `+ data.result[i][0] +``
}
$('.dropdown-menu').html(htmlAdd)
$('.dropdown-menu').show()
},
dataType: "jsonp"
})
})
// 搜索框失去焦点
$("#searchText").blur(
function () {
$('.dropdown-menu').hide();
}
)
我们使用Jquery
的方式来发送Ajax
。需要注意的是这里虽然使用的是$.ajax()
,但他不是真正的Ajax
请求。因为Ajax
请求响应回来的数据,是不支持跨域访问
的(我们访问的是淘宝
的API
的接口),这里实际上是使用jsonp
格式的数据。它的原理是这一类标签中的
src
属性,是可以跨域访问的,jsonp
正式利用了这个特点来解决跨域访问
问题的。
使用json
格式,发送Ajax
请求。
<script type="text/javascript">
$(function () {
$("#btn").click(
function () {
$.ajax({
url: "https://suggest.taobao.com/sug?k=1&area=c2c&q=%E6%89%8B%E6%9C%BA&code=utf-8&ts=1668177833880",
type: "get",
success: function (data) {
console.log(data)
},
dataType: "json"
})
}
)
})
</script>
使用jsonp
。
<script type="text/javascript">
$(function () {
$("#btn").click(
function () {
$.ajax({
url: "https://suggest.taobao.com/sug?k=1&area=c2c&q=%E6%89%8B%E6%9C%BA&code=utf-8&ts=1668177833880",
type: "get",
success: function (data) {
console.log(data)
},
dataType: "jsonp"
})
}
)
})
</script>
💡说明:
我们这里也只是简单演示了jsonp
和Ajax
能否跨域访问的区别,而且我们是使用的jquery
方式,使用jsonp
的时候也没有指定回调函数
的名称。详细的原理小伙伴们可以自己查找资料了解。我们这里是起到一个抛砖引玉
的作用😝。