2011-05-12 16 views
1

我沒有任何運氣,但我想知道如果我可以抓住json數據,如果它不是json編碼服務器端用php。例如,如果我是隻是呼應了一些數據,像這樣:你可以檢索json數據,而不用在php中json_encoded?

echo '{"subscriptions": [{"subscribe":"'.$subscribe[0].'"},{"subscribe":"'.$subscribe[1].'"},{"subscribe":"'.$subscribe[2].'"},{"subscribe":"'.$subscribe[3].'"},{"subscribe":"'.$subscribe[4].'"}]}'; 

可我仍然使用jQuery的AJAX調用JSON搶的數據?

+0

有對JSON是徹底打破這麼多的方法。使用編碼器。 – 2011-05-12 05:04:10

回答

3

這當然看起來不錯,應該工作得很好。

json_encode()僅使得該過程更容易,因爲在手動創建字符串時,創建引用/括號/大括號/方括號出錯相當容易。

我猜你只是問作爲json_encode()不可用在您的服務器上。作爲替代,您可以嘗試Zend Framework中的組件。這會嘗試使用json_encode(),但在不可用時會回退到內置方法。

http://framework.zend.com/manual/en/zend.json.html

+0

感謝一噸,現在我只需要讓我的每個循環工作。再次感謝您的快速響應和幫助! – mcbeav 2011-05-12 05:19:02

3

是的,只要回顯的數據是有效的JSON數據

2

本質上一切事情是要創建一個JSON格式,並創建自己的編碼器。但是你也需要發佈自己的JSON頭文件。與開始回調PHP文件:

header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

請記住,你將需要採取特別注意格式化你的JSON否則它會破壞你的應用程序。

1

我相信只要您發送正確的服務器標頭,指出它是JSON內容Content-Type: application/json它應該是好的。

使用PHP的json_encode()有什麼問題?你在使用舊版本的PHP嗎?

+0

不,我只是使用mysqli,它很難將準備好的查詢重新組合到一個數組中。沒有內置函數可以這麼做,所以我正在以不同的方式進行討論 – mcbeav 2011-05-12 05:26:24

1

你可以,但不建議。您應該使用json_encode。如果你有第一次改變你的對象的問題,你可以做這樣的:

$obj = array(
    "subscriptions" => array(
    array("subscribe" => (string)$subscribe[0]), 
    array("subscribe" => (string)$subscribe[1]), 
    array("subscribe" => (string)$subscribe[2]), 
    array("subscribe" => (string)$subscribe[3]), 
) 
); 
echo json_encode($obj); 

乾杯