jQuery使用jsonp实现百度搜索的示例代码


Posted in jQuery onJuly 08, 2020

项目实现:还原百度搜索功能;

项目原理:利用json回调页面传参;

什么是jsonp:就是利用<script>标签的src地址,让目标页面回调本地页面,并且带入参数,也解决了跨域问题;

代码如下:

html(css代码不提供)

<div class="box">
    <input type="text" />
    <div class="ssk"></div>
    <button>×</button>
 </div>

js

var script,ids;
   $(".box>input").on("input",inputHandler)
   function inputHandler(e){
    if (ids) return;
    ids = setTimeout(function () {//节流
     clearTimeout(ids);
     ids=0;
     if (script) { //删除上一次创建script标签
      script.remove();
      script = null;
     }
     script=$("<script><\/script>").attr("src",`https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=
        ${$(".box>input").val()}





&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0&cb=callback`
     ).appendTo("body");
     // 点击x按钮删除搜索框内容,并且隐藏button按钮
     $("button").click(function () {
      $("input").val("");
      $("button").css("display", "none");
     });
     // 如果搜索框为空则把x按钮隐藏
     if ($("input").val().length === 0) {
      $("button").css("display", "none");
     } else {
      $("button").css("display", "block");
     }

    }, 500);
   }
   function callback(data) {
    if (data) {
     $(".box>.ssk").css("display", "block");
    }
    // 删除上一次的搜索列表
    if ($(".ssk").children().length !== 0) {
     $("a").remove();
    }
    // 遍历数组内容输出
    $.each(data.s, function (index, item) {
     $("<a>"+item+"</a>").appendTo(".box>.ssk");
     $("a").attr('href','https://www.baidu.com/s?tn=02003390_43_hao_pg&isource=infinity&wd='+encodeURIComponent(item));
    });
    // 失去焦点隐藏搜索列表
    $(".box>.ssk").on("mouseleave", function () {
     $(".box>.ssk").css("display", "none");
    });
   }
  • 这里目标页面是“https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=&json=1&p=3&sid=22084_1436_13548_21120_22036_22073&req=2&csor=0&cb=callback” 向百度服务器请求
  • callback函数为目标服务器的回调函数,传回来的参数data是一个对象;
  • callback回调函数中,传回来的data中s属性是搜索到的内容,遍历data.s数组,将每个元素的外层添加a标签,a标签的超链接为搜索到的内容,
  • 改变a标签超链接的wd属性就可以搜索到对应的内容;wd传入的值需要进行编码(encodeURIComponent)处理,服务器才能给出对应内容的超链接

日常百度搜索都有wd属性,改变wd属性即可得到搜索

jQuery使用jsonp实现百度搜索的示例代码

最终效果:

jQuery使用jsonp实现百度搜索的示例代码

以上就是jQuery使用jsonp实现百度搜索的示例代码的详细内容,更多关于jQuery实现百度搜索的资料请关注三水点靠木其它相关文章!

jQuery 相关文章推荐
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery替换节点元素的操作方法
Mar 18 jQuery
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 jQuery
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
jQuery 动态粒子效果示例代码
Jul 07 jQuery
jQuery 实现扁平式小清新导航
Jul 07 #jQuery
jQuery 动态粒子效果示例代码
Jul 07 #jQuery
jQuery实现简单飞机大战
Jul 05 #jQuery
jQuery实现简单日历效果
Jul 05 #jQuery
jQuery实现飞机大战小游戏
Jul 05 #jQuery
jquery实现上传图片功能
Jun 29 #jQuery
jQuery实时统计输入框字数及限制
Jun 24 #jQuery
You might like
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
python操作gmail实例
2015/01/14 Python
python实现基本进制转换的方法
2015/07/11 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
Django框架models使用group by详解
2020/03/11 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
自我评价怎么写正确呢?
2013/12/02 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
小班上学期个人总结
2015/02/12 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
vue+iview实现手机号分段输入框
2022/03/25 Vue.js