Хороший способ отправить сложные объекты с помощью AJAX? - PullRequest
0 голосов
/ 28 августа 2009

В моем веб-приложении у меня есть несколько сложных объектов, написанных на JavaScript (т. Е. Вложенные массивы, объекты внутри объектов с объектами и т. Д.), И природа моего приложения зависит от них. Мне нужно отправить все данные в PHP, чтобы я мог сохранить их в базе данных. Какой эффективный и простой способ отправить мои объекты в PHP? Я попробовал JSON, но получил странные ошибки, такие как «слишком много рекурсии», что, как я предполагаю, означает, что мои объекты слишком сложны для этого. Так есть ли хорошая библиотека сценариев, которая сделает это? Заранее спасибо.

РЕДАКТИРОВАТЬ:

Итак, JSON. Я попытался обновить библиотеку JSON безрезультатно, и теперь я ищу циклические ссылки.

Ответы [ 3 ]

5 голосов
/ 28 августа 2009

JSON - правильный ответ.

Я подозреваю, что ваши библиотеки JSON повреждены или слишком ограничены. Проверьте JSON, чтобы убедиться, что он правильно сформирован, и если да, то найдите лучшую библиотеку, способную справиться с вашей структурой данных.

Рассмотрим также упрощение структуры данных. Это может быть слишком сложно для вашего же блага.

2 голосов
/ 28 августа 2009

Практически любая библиотека JSON будет иметь слишком много ошибок рекурсии, если у вашего объекта есть циклические ссылки. Предел рекурсии в реализациях javascript, которые я пробовал, намного превышает ~ 100 уровней, поэтому ваш объект должен быть действительно сложным.

Вы захотите обнаружить и устранить циклические ссылки, прежде чем пытаться сериализовать ваш объект, используя любую библиотеку.

edit: Только что протестировал Firefox 3.5 и он достигает 3000 уровней рекурсии.

1 голос
/ 28 августа 2009

Я согласен - JSON - это ответ. Я думаю, что ошибка, с которой вы столкнулись, может быть частью библиотеки, которую вы используете ...

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

Упоминает ту же ошибку.

Я использовал много сложных объектов JSON и никогда не сталкивался с этой ошибкой - я бы сказал, что что-то еще происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...