2010-12-04 19 views
0

我有一個具有函數的對象的PHP數組,getValue獲取對象的值。 所以,如果我想獲得它在PHP我只是值:在JS中通過JSON使用PHP方法?

echo mapArray[2][2]->getValue; 

我通過陣列JS使用:

var mapArray = <?php echo json_encode($mapArray); ?> 

如果我做了

document.write(mapArray); 

我得到一組「對象對象」字符串。如果我嘗試:

document.write(mapArray.[2][2].getValue); 

我得到「未定義」。

爲什麼會發生這種情況?我是否必須模仿PHP數據對象,以便在JS中識別這些方法,或者JSON編碼能否爲我提供這方面的幫助?

+0

你的第二個代碼塊的渲染結果是什麼? PHP中有一個呢? – 2010-12-04 19:36:20

+0

我假設在你的第一塊代碼中,你的意思是`mapArray [2] [2] - > getValue()`。如果`getValue`是一個簡單的屬性,而不是方法,那麼問題的其餘部分就沒有意義了。 – VoteyDisciple 2010-12-04 19:48:45

回答

4

全部json_encode確實會返回一個代表您的數據的字符串。

想象一下,如何才能創建所有PHP函數的JavaScript版本。 json_encode本質上必須是一個編譯器,能夠理解所有可能的PHP功能並將其轉換爲等效的JavaScript功能。

可以想象這樣的事情可以用於簡單的函數,但它如何能夠用於更精細的代碼呢?如果getValue函數調用一些庫PHP代碼來創建MySQL連接,檢索數據並使用JavaScript中不存在的內置PHP函數執行計算,那麼json_encode函數必須將整個PHP語言到JavaScript中。

不,你只能在JSON中獲得數據。沒有功能。

對於您所描述的具體情況,在您使用訪問方法訪問某些私有數據的情況下,只需創建一個數組(或對象),以便在調用json_encode之前描述要返回給瀏覽器的實際數據。

0

將數組序列化爲JSON並將其傳遞給客戶端進行JavaScript評估時,您只能傳遞數組的表示形式及其內容(即屬性值)。