我有一个生成JSON对象的PHP页面。 我有一个页面,使用jquery库,我想从中访问该对象。 但它不起作用。我看到消息'inside_nk'而不是'inside_ok'。为什么? 我试图尽可能简化我的代码。
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
的工作原理。我用萤火虫检查了。
答案 0 :(得分:0)
如果您要使用json_encode
,我认为最好在array()
而不是对象上使用它:
$out = array("i" => 0, "e" => 1);
echo json_encode($out);
答案 1 :(得分:0)
是否与您的类在其类中命名相同的函数有关,或者您没有指定要访问的类?通常你必须做这样的事情:
// PHP 5.3
class classy{
function classyfn(){
}
}
$inst_c1 = new classy.classyfn();
也许你的$ inst_c1对它正在调用的内容感到困惑,或者不知道在哪里找到这个函数?
如果你取出json_encode,它输出的东西只有一个回声?如果没有,那就表明它是同一个类和fn名称的问题。
答案 2 :(得分:0)
我认为这是浏览器的一个问题。我的是Firefox 7.01,它的工作正常。
从PHP(5.3.4)脚本获得的输出是
{"i":0,"e":1}
这是有效的JSON,因此它不会有任何问题。