我尝试使用jquery发出跨域请求。这就是客户端的样子,
<script src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(document).ready( function(){
$.ajax({
type: 'GET',
url: "http://www.xserver.com/xdomainhandler.php",
processData: true,
data: {
type:"gotohell"
},
dataType: "json",
success: function (data) {
myglob=data;
var repo=JSON.parse(myglob);
alert(repo.type);
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert('ends up in error state');
}
});
});
</script>
,接收此请求的服务器页面代码如下所示:
<?php
header('Access-Control-Allow-Origin: *');
header('Expires: ' . gmdate('r', 0));
header('Content-type: application/json');
session_cache_limiter('nocache');
$arr = array ('response'=>'success','comment'=>'test comment here','type'=>$_GET['type']);
echo json_encode($arr);
?>
但是当我完成请求/响应过程时,我在'repo'变量中什么都没有。我使用firebug检查了响应,它显示响应,如
{"response":"success","comment":"test comment here","type":"gotohell"}
我还检查了它显示的firebug的DOM面板中的 myglob 变量,
Object { response="success", comment="test comment here", type="gotohell"}
但是当我将myglob解析为repo时,它什么都没显示......我哪里出错了。有人可以帮助我吗谢谢!
答案 0 :(得分:3)
你不需要解析它,因为jQuery解析它,所以避免
var repo=JSON.parse(myglob);
然后致电
alert(data.type);
答案 1 :(得分:2)
因为你提供了dataType: 'json'
jQuery已经解析了响应 - 再次解析它会导致错误。删除以下行:
var repo = JSON.parse(myglob);