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