JQuery1.2 后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。
实例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>jQuery-跨域请求</title>
<script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type : "GET",
url : "http://127.0.0.10:81/ad_1/test.php?act=jsoncheckuser&callback=?",
dataType : "jsonp",
jsonp: 'callback',
success : function(json)
{
$('#msg_box').html(json.msg);
return true;
}
});
});
</script>
<body>jQuery-跨域请求:
<div id="msg_box"></div>
</body>
</html>
PHP代码(输出json返回):
<?php $action = $_GET['act']; $callback = $_GET['callback']; if ($action) { echo "{$callback}({'msg':'this is a jquery jsonp test message!'})"; exit(); } else { echo "{$callback}({'msg':'error action!'})"; exit(); } ?>
实际操作中使用的PHP代码
if($user_username) { $flag = $user->getUserName($user_username); if($flag) { $flag = 1; } else { $flag = 0; } } else { $flag = 0; } echo "{$callback}({'msg':'".$flag."'})"; exit();