JavaScript~ajax~百度搜索

本文介绍了一个简单的百度搜索建议实现方案,通过监听输入框的输入事件并使用JSONP跨域请求百度搜索建议API来动态生成搜索建议列表。点击列表中的项会自动填充到输入框,并能直接跳转到百度搜索页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>百度搜索建议</title>
	<script>
		/*
			接口地址:https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su
				* 参数
					* json=1
					* cb=getData
					* wd=html5
			1) 键盘按下 生成script 请求数据 
			2)获取数据生成html(要用到全局函数)
			3)点击搜索跳转
			4)文字写入input的value;
		 */

		document.addEventListener('DOMContentLoaded',()=>{

			let keyword = document.getElementById('keyword');
			let res = document.getElementById('res');
			let btn = document.querySelector('button');	
			// console.log(keyword,res,btn)
			
			let script;
			let timer;
			//全局函数(获取数据生成html)jsonp需要全局函数
			window.getData = function(data){
				console.log(data);//可以为随意参数
				let ul = document.createElement('ul');
				ul.innerHTML = data.s.map(function(item){
					return `<li>${item}</li>`;
				}).join('');

				//每次输入前清除前一次的,避免生成多个ul
				res.innerHTML = '';
				res.appendChild(ul)
			}

			//键盘按下 生成script 请求数据 
			keyword.oninput = function(){
				// clearTimeout(timer)
				var _kw = keyword.value;
				//避免输入每个字符都请求一次,以至于请求过多
				timer = setTimeout(function(){
					// console.log(_kw);
					script = document.createElement('script');
					script.src = `https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?json=1&cb=getData&wd=${_kw}`;
					document.body.appendChild(script);
				},100)
				
			}

			//点击跳转
			btn.onclick = function(){
				let _kw = keyword.value;
				// console.log(_kw);
				location.href = `http://www.baidu.com/s?wd=${_kw}`;
			}

			//点击内容添加到input
			res.onclick = function(e){
				let target = e.target;
				if (target.tagName.toLowerCase()=== 'li') {
					console.log(target.innerText);
					keyword.value = target.innerText;
				};
			}

		});
	</script>
</head>
<body>
	<h1>百度搜索建议</h1>
	<input type="text" id="keyword"><button>搜索</button>
	<div id="res"></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值