JSONP学习笔记


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script>
function fn1(data) {
	var oUl1 = document.getElementById('ul1');
	var html = '';
	for (var i=0; i<data.length; i++) {
		html += '<li>'+data[i]+'</li>';
	}
	oUl1.innerHTML = html;
}
function fn2(data) {
	var oUl2 = document.getElementById('ul2');
	var html = '';
	for (var i=0; i<data.length; i++) {
		html += '<li>'+data[i]+'</li>';
	}
	oUl2.innerHTML = html;
}
function fn3(data) {
	var oUl3 = document.getElementById('ul3');
	var html = '';
	for (var i=0; i<data.length; i++) {
		html += '<li>'+data[i]+'</li>';
	}
	oUl3.innerHTML = html;
}
</script>
<script>
window.onload = function() {
	
	var oBtn1 = document.getElementById('btn1');
	
	var oBtn2 = document.getElementById('btn2');
	
	oBtn1.onclick = function() {
		
		var oScript = document.createElement('script');
		oScript.src = 'getData.php?callback=fn1';
		document.body.appendChild(oScript);
		
	}
	
	var oBtn2 = document.getElementById('btn2');
	
	oBtn2.onclick = function() {
		
		var oScript = document.createElement('script');
		oScript.src = 'getData.php?t=str&callback=fn2';//传递了两个参数
		document.body.appendChild(oScript);
		
	}
	
	var oBtn3 = document.getElementById('btn3');
	
	oBtn3.onclick = function() {
		
		var oScript = document.createElement('script');
		oScript.src = 'getData.php?callback=fn3';
		document.body.appendChild(oScript);
		
	}
	
}
</script>
</head>

<body>
	<input type="button" id="btn1" value="加载数字" />
    <ul id="ul1"></ul>
    <input type="button" id="btn2" value="加载字母" />
    <ul id="ul2"></ul>
    <input type="button" id="btn3" value="加载字母" />
    <ul id="ul3"></ul>
</body>
</html>

getData.php文件中的内容:

<?php
$t = isset($_GET['t']) ? $_GET['t'] : 'num';//接受一个参数t,赋值给$t,如果没有t,将num赋值给$t
$callback = isset($_GET['callback']) ? $_GET['callback'] : 'fn1';//接受一个参数callback,赋值给$callback,如果没有,则将fn1赋值给$callback

$arr1 = array('111111','22222222','33333333','4444444','555555555555555555555');
$arr2 = array('aaaaaaaaaaaa','bbbbbbbb','cccccccccccc','ddddddddd','eeeeeeeeeeee');

if ($t == 'num') {
	$data = json_encode($arr1);
} else {
	$data = json_encode($arr2);
}

echo $callback.'('.$data.');';

利用百度数据库,进行搜索提示:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#q {width: 300px; height: 30px; padding: 5px; border:1px solid #f90; font-size: 16px;}
#ul1 {border:1px solid #f90; width: 310px; margin: 0;padding: 0; display: none;}
li a { line-height: 30px; padding: 5px; text-decoration: none; color: black; display: block;}
li a:hover{ background: #f90; color: white; }
</style>
<script>
function miaov(data) {
	
	var oUl = document.getElementById('ul1');
	var html = '';
	if (data.s.length) {
		oUl.style.display = 'block';
		for (var i=0; i<data.s.length; i++) {
			html += '<li><a target="_blank" href="http://www.baidu.com/s?wd='+data.s[i]+'">'+ data.s[i] +'</a></li>';
		}
		oUl.innerHTML = html;
	} else {
		oUl.style.display = 'none';
	}
	
}
window.onload = function() {
	
	var oQ = document.getElementById('q');
	var oUl = document.getElementById('ul1');
	
	oQ.onkeyup = function() {
		
		if ( this.value != '' ) {
			var oScript = document.createElement('script');
			oScript.src = 'https://www.baidu.com/su?&wd='+this.value+'&cb=miaov';
			document.body.appendChild(oScript);
		} else {
			oUl.style.display = 'none';
		}
		
	}
	
}
</script>
</head>

<body>
	<input type="text" id="q" />
	<ul id="ul1"></ul>
</body>
</html>

使用jQuery的ajax():

<!DOCTYPE HTML>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>无标题文档</title>  
<style>  
#q {width: 300px; height: 30px; padding: 5px; border:1px solid #f90; font-size: 16px;}  
#ul1 {border:1px solid #f90; width: 310px; margin: 0;padding: 0; display: none;}  
li a { line-height: 30px; padding: 5px; text-decoration: none; color: black; display: block;}  
li a:hover{ background: #f90; color: white; }  
</style>  
<script src="jquery-2.0.3.js"></script>
<script>  
window.onload = function() {    
    var oQ = document.getElementById('q');  
    var oUl = document.getElementById('ul1');  
      
    oQ.onkeyup = function() {  
          _this = this
        if ( this.value != '' ) {  
//          var oScript = document.createElement('script');  
//          oScript.src = 'https://www.baidu.com/su?wd='+this.value+'&cb=miaov';  
//          document.body.appendChild(oScript);  
            $.ajax({
            	type:"get",
            	url:"https://www.baidu.com/su?wd=" + _this.value,
            	dataType:"jsonp",
            	jsonp:"cb",
            	jsonpCallback:"miaov",
            	async:false,
            	success:function (data) {    
					    var oUl = document.getElementById('ul1');  
					    var html = '';  
					    if (data.s.length) {  
					        oUl.style.display = 'block';  
					        for (var i=0; i<data.s.length; i++) {  
					            html += '<li><a target="_blank" href="http://www.baidu.com/s?wd='+data.s[i]+'">'+ data.s[i] +'</a></li>';  
					        }  
					        oUl.innerHTML = html;  
					    } else {  
					        oUl.style.display = 'none';  
					    }       
					}
            });

        } else {  
            oUl.style.display = 'none';  
        }  
          
    }      
}  
</script>  
</head>  
  
<body>  
    <input type="text" id="q" />  
    <ul id="ul1"></ul>  
</body>  
</html>  





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值