当前位置: 移动技术网 > IT编程>开发语言>JavaScript > jsonp跨域获取百度联想词的方法分析

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

2019年07月21日  | 移动技术网IT编程  | 我要评论
本文实例讲述了jsonp跨域获取百度联想词的方法。分享给大家供大家参考,具体如下: jsonp原理: 1.web页面上用<script> 引入 js文件时则

本文实例讲述了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中ajax操作技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网