php+ajax+jsonp

本文介绍了使用PHP实现跨域访问的方法,包括通过设置HTTP头部允许跨域、利用JSONP进行跨域请求,以及如何指定回调函数处理返回的数据。

1.php自带头允许跨域访问

第一种方法,使用$.ajax()

jsonp.html文件

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></meta>		
		<meta charset="UTF-8"></meta>
	</head>

	<body>
		<script>
			$.ajax({
				url      : "http://jsonp.com/jsonp.php",
				type     : "get",
			}).done(function(data) {
				console.log(data);
			}).fail(function(header) {
				console.log(header);
			});
		</script>
	</body>
</html>
http://jsonp.com/jsonp.php文件

<?php
//允许跨域
header('Access-Control-Allow-Origin: *'); 
$json = array(
    'name' => 'Tom',
    'sex'  => 'man'
);
echo json_encode($json);
结果输出:

{name: 'tom',sex:'man'}


第二种方法,使用$.getJSON()

jsonp.html文件

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></meta>		
		<meta charset="UTF-8"></meta>
	</head>

	<body>
		<script>
			$.getJSON('http://jsonp.com/jsonp.php',function(data) {
				console.log(data);
			});
		</script>
	</body>
</html>	



2.php不带头跨域访问,使用jsonp

jsonp.html文件

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></meta>		
		<meta charset="UTF-8"></meta>
	</head>

	<body>
		<script>
			$.ajax({
				url      : "http://jsonp.com/jsonp.php",
				type     : "get",
				dataType : "jsonp",
				jsonp	 : 'callback',
			}).done(function(data) {
				console.log(data);
			}).fail(function(header) {
				console.log(header);
			});
		</script>
	</body>
</html>
http://jsonp.com/jsonp.php文件

$json = array(
    'name' => 'Tom',
    'sex'  => 'man'
);
$callback = $_GET['callback'];
echo $callback."('".json_encode($json)."')";

结果输出:

{name: 'tom',sex:'man'}


3.jsonp也可以指定返回执行某个函数

jsonp.html文件

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></meta>		
		<meta charset="UTF-8"></meta>
	</head>

	<body>
		<script>
			function callbackfunc(data)
			{
			    console.log(data);
			}

			$.ajax({
				url      : "http://jsonp.com/jsonp.php",
				type     : "get",
				dataType : "jsonp",
				jsonp	 : 'callback',
				jsonpCallback: 'callbackfunc',
			}).done(function(data) {
				console.log(data);
			}).fail(function(header) {
				console.log(header);
			});
		</script>
	</body>
</html>	
http://jsonp.com/jsonp.php文件

$json = array(
    'name' => 'Tom',
    'sex'  => 'man'
);
$callback = $_GET['callback'];
echo $callback."('".json_encode($json)."')";
结果输出:

{name: 'tom',sex:'man'}

{name: 'tom',sex:'man'}













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值