php和jsonp的简单使用

jsonp我简单的认为就是js的src引用了一个回调的函数。


php处理端

<?php
	header('content-type:text/javascript;charset=utf-8');
	$name=$_GET['callback'];
	$data=array('name'=>'tom','age'=>'23','referer'=>$_SERVER['HTTP_REFERER']);
	//第一种方式处理数据为纯json数据,客户端直接用data接受,直接塞入到需要的处理环境中,返回的是json数组,不会被浏览器解析
	//ps: JSON_HEX_APOS 是phpjson_encode 参数,参考http://php.net/json_encode提供的把单引号换为 \u0027 了。
	
	// $ret = json_encode($data, JSON_HEX_APOS);
    // $name . '(\'' . $ret . '\');';

// 第二种为两个对象,对应的客户端可用data.name+data.age分别接收,会可以被解析
    echo  $name.'('.json_encode($data).')';

  

html端

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script>

	function callb(data){
		// alert(data.result);
	}
	</script>

	
	<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>

	<!-- 要放在aehok函数下面 -->
	<script src=http://b.com/jsonp/alert.js></script>
</head>
<body>
	<h1>he</h1>

<script>

	// $(function(){

	// 	$.ajax({

	// 		type:'get',
	// 		async:false,
	// 		url:'http://b.com/jsonp/data.php',
	// 		dataType:'jsonp',
	// 		jsonp:'callback',
	// 		jsonpCallback:'hehe',
	// 		success:function(data){
			
	// 		// alert(data); 接受第一种处理


	// 		alert(data.name+data.age);
	// 		},
	// 		error:function(){
	// 			alert('err');
	// 		},

	// 	});



	// })
	// 比上一种更简单的jsonp写法
	$.getJSON("http://b.com/jsonp/data.php?callbac=?", function(getUserInfo){
          alert(getUserInfo.name+getUserInfo.age+getUserInfo.referer)})
	</script>
	
</body>
</html>

为了让大家明白那个alert.js是干什么用的,我补上代码,其实很简单,可以帮助我们理解jsonp的原理

就两句:

alert('b.com');
callb({"result":"b.sdata"});
就是a.com src了这个js文件,然后js文件里包含a中的函数名字callb,这样就执行了

猜你喜欢

转载自blog.csdn.net/u010703523/article/details/46893305