2012-07-21 68 views
2

我在zend和js中的json功能有問題。zend php多個數組json_encoding

我嘗試編碼含有的模型一些數目這樣一個單一的陣列:

echo json_encode(Application_Model_Marker::getMarkers()); 

var mark = JSON.parse(jsonVal); //in js 

其中getMarkers是返回標記模型的數組的靜態方法。

這工作正常,當我解析它在js腳本中,並嘗試訪問json對象的值,它工作正常。

但是,如果我嘗試創建和發送陣列的一個這樣的數組:

$allData = array(); 
$allData['info'] = Application_Model_Marker::getMarkers(); 
$allData['openingHours'] = Application_Model_Openinghours::getOpeningHours(); 
$allData['happyHours'] = Application_Model_Happyhour::getHappyHours(); 

echo json_encode($allData); 

它仍然將所有正確的信息,當我試圖提醒(jsonVal.responseText);在js。

它有三個數組,每個數組都包含一些對象數組。

但是,當我嘗試初始化一個變量給解析的json對象,就像第一個示例中一樣,我無法訪問這些值,並且當我嘗試它時程序停止時,似乎會出現某種錯誤。

我不太明白它,因爲它具有所有正確的信息,當我只是嘗試打印編碼json對象的響應文本。

任何想法如何做這個多維json編碼?

+0

你能澄清»某種錯誤«的?大多數時候,錯誤*有助於查明原因並簡單地忽略它(或者說「它不起作用」),這使得其他人很難幫助你。 – Joey 2012-07-21 23:24:20

+0

你如何獲得響應並初始化'jsonVal'? 'JSON.parse()'的第一個參數應該是字符串變量,但是你提到了'alert(jsonVal.responseText)',所以我猜'jsonVal'是一個對象?那麼你可以試試'JSON.parse(jsonVal.responseText)'或'jsonVal'已經是json解析的對象了? – mask8 2012-07-22 00:23:21

+0

當調試這樣的調用時,[Firebug](http://getfirebug.com/)就派上用場了。它允許你用錯誤等來調試你的javascript/dom。其次,你有沒有嘗試訪問'mark.info'?它是不確定的嗎? – 2012-07-22 03:32:01

回答

0

試試這個,希望這會工作:

<sctript> 
var mark; 
eval("mark = "+jsonVal+";"); 
</sctrip> 
+0

我想過嘗試eval,但我讀過,這是非常糟糕的做法相比,解析? – PNS 2012-07-23 08:48:25

+0

如果數據是你的從你的服務器,你有完全控制它,然後評估是不是一個壞習慣。 – Shehabix 2012-07-25 12:41:50