2009-08-28 105 views
0

在我的網絡應用程序中,我有一些使用JavaScript編寫的複雜對象(即嵌套數組,對象包含對象等),我的應用程序的性質依賴於這些。我需要將所有數據發送到PHP,以便我可以將其保存到數據庫。什麼是將我的對象發送到PHP的高效,簡單的方法?我嘗試了JSON,但得到了'太多遞歸'這樣的奇怪錯誤,我猜測這意味着我的對象太複雜了。那麼是否有一個好的腳本庫可以做到這一點?提前致謝。用ajax發送複雜對象的好方法是什麼?

編輯:

所以JSON然後。我試圖更新JSON庫無濟於事,我現在正在尋找循環引用。

+0

對象是循環的,還是不是樹?例如。 A = [B,C],B = [D],C = [D],D = []。 JSON只能表示樹木的對象。 – Managu

+0

有沒有一種簡單的方法來查找循環,還是我必須手動執行?我在手動猜測,對吧? – Dan

+0

http://en.wikipedia.org/wiki/Cycle_detection – Breton

回答

2

如果你的對象有循環引用,幾乎任何JSON庫都會有太多的遞歸錯誤。我嘗試過的javascript實現的遞歸限制遠遠超過了100級,所以你的對象必須是真的是複雜。

在嘗試使用任何類型的庫對序列化對象之前,您需要檢測並消除循環引用。

編輯:剛剛測試了Firefox 3.5,它在3000遞增遞增。

5

JSON 正確的答案。

我懷疑你的JSON庫破壞或者限制太多。檢查JSON,看看它是否格式良好,如果是,找一個更好的庫來處理你的數據結構。

也考慮簡化數據結構。爲了您自己的利益,這可能太複雜了。

1

我同意 - JSON是答案。我想你所遇到的錯誤可能是你正在使用的庫的一部分...

http://markmail.org/message/2d5lvmdeg2qg55qr

提到了同樣的錯誤。

我已經使用了許多複雜的JSON對象,從來沒有遇到過這個錯誤 - 我會說別的東西在玩。

+0

我嘗試了你的鏈接說,我仍然有同樣的錯誤,對不起。 – Dan

+0

您有可能發佈導致錯誤的數據樣本嗎? 您可能還想通過驗證程序運行數據以查看它是否標記了任何內容。 http://www.jsonlint.com/ –

相關問題