2011-09-15 35 views
2

我有一个生成JSON对象的PHP页面。 而我有一个页面,使用jquery库,我想从中访问该对象。 但它不起作用。我看到消息'inside_nk'而不是'inside_ok'。为什么? 我试图尽可能简化我的代码。为什么不这种简单的JSON编码工作?

prueba.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/prueba.js"></script> 
</head> 
<body> 
</body> 
</html> 

prueba PHP

<?php 
header('Content-type: application/json; charset=utf-8'); 

class c1 { 
    var $i = 0; 
    var $e = 1; 
    function c1() {} 
} 

$inst_c1 = new c1(); 

echo json_encode($inst_c1); 
?> 

prueba.js

$(document).ready(function() { 
alert('begin'); 
$.ajax({ 
    url: 'http://[myserver]/prueba.php', 
    dataType: 'json', 
    data: '', 
    success: function (data) { alert('inside_ok'); }, 
    error: function (data) { alert('inside_nk'); }, 
}); 
alert('end'); 
}); 

注: 我"url: 'http://[myserver]/prueba.php?callback=?',"尝试和

"dataType: 'jsonp'". 
http://[myserver]/prueba.php 

工程。我检查了萤火虫。

+1

答案。 http://en.wikipedia.org/wiki/Same_origin_policy 我不得不想另一种方式来做到这一点。 –

回答

0

如果你打算使用json_encode我认为这将是更好地使用它的array()而不是一个对象:

$out = array("i" => 0, "e" => 1); 
echo json_encode($out); 
+1

对象得到正确编码:http://codepad.viper-7.com/1LzvhU – bstakes

+0

我说它会*更好*使用'数组()'不是编码对象将完全失败。请仔细阅读我的回复。 – nkcmr

0

是否有什么与你的函数被命名为同样的事在其类中,还是不指定要访问的类?通常你必须做这样的事情:

// PHP 5.3 
class classy{ 

    function classyfn(){ 

    } 
} 
$inst_c1 = new classy.classyfn(); 

也许你的$ inst_c1的困惑,它被调用,或者不知道在哪里可以找到的功能?

如果你拿出json_encode它输出任何只有回声?如果不是的话,那就意味着它是相同类别和名称的问题。

0

我认为它是一个浏览器的问题。我的火狐7.01和它的工作正常。

从PHP获得的输出(5.3.4)脚本

{"i":0,"e":1} 

这是有效的JSON所以一定不会有什么问题。

相关问题