2009-08-28 58 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/ –

相关问题