jsonp跨域获取百度联想词的方法分析


Posted in Javascript onMay 13, 2019

本文实例讲述了jsonp跨域获取百度联想词的方法。分享给大家供大家参考,具体如下:

jsonp原理:

1.Web页面上用<script> 引入 js文件时则不受是否跨域的影响 (不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>)

2.于是我们把数据放到服务器上,并且数据为json形式(因为js可以轻松处理json数据)

3.因为我们无法监控通过<script>的src属性是否把数据获取完成,所以我们需要做一个处理。

4.实现定义好处理跨域获取数据的函数,如 function doJson(data){}。

5.用src获取数据的时候添加一个参数cb=‘doJson' (服务端会根据参数cb的值返回对应的内容) 此内容为以cb对应的值,doJson为函数真实要传递的数据为函数的参数的一串字符如 doJson('数据')

百度联想词的实现:

用jsonp解决跨域问题。我们就跨域拿到百度的数据

<script>
  //输入框
  var oInp = document.getElementsByTagName('input')[0];
  //得到的数据存在ul的li里
  var oUl = document.getElementsByTagName('ul')[0];
  //获取输入内容,查找百度对应的src
  oInp.oninput = function () {
    var value = this.value;
    var oScript = document.createElement('script');
    oScript.src = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=' + value + '&cb=doJosn';
    document.body.appendChild(oScript);
  }
  //对传回的数据进行处理(回调函数)
  function doJosn(data) {
    var s = data.s;
    var str = '';
    if (s.length > 0) {
      s.forEach(function (ele, index) {
        str += '<li><a href =https://sp0.baidu.com/s?wd=' + ele + '>' + ele + '</a></li>';
      })
      oUl.innerHTML = str;
      oUl.style.display = 'block';
    } else {
      oUl.style.display = 'none';
    }
  }
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
JavaScript面向对象之静态与非静态类
Feb 03 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
JavaScript对象之深度克隆介绍
Dec 08 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
vue中倒计时组件的实例代码
Jul 06 Javascript
vue 实现在函数中触发路由跳转的示例
Sep 01 Javascript
Vue将页面导出为图片或者PDF
Aug 17 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
Mar 25 Javascript
基于Fixed定位的框选功能的实现代码
May 13 #Javascript
JQuery事件委托原理与用法实例分析
May 13 #jQuery
使用原生js编写一个简单的框选功能方法
May 13 #Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 #Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 #jQuery
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 #Javascript
JavaScript封闭函数及常用内置对象示例
May 13 #Javascript
You might like
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
django解决跨域请求的问题详解
2019/01/20 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
剪枝的学问教学反思
2014/02/07 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
村级四风对照检查材料
2014/08/24 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
南极大冒险观后感
2015/06/05 职场文书