2011-09-15 32 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所以一定不會有什麼問題。

相關問題