Скажем, у меня есть веб-форма, состоящая из текстового поля ввода, кнопки «Добавить» и кнопки «Отправить». Пользователь может добавить текст в div, введя ввод и нажав «Добавить», который будет динамически (с использованием javascript) добавить div с тем, что они набрали. Также во время добавления я сохраняю текст в объекте javascript. После добавления одного или нескольких элементов пользователь затем нажимает «Отправить», чтобы отправить данные в объекте javascript на сервер, который будет сохранен. Данные сериализуются в строку JSON и отправляются на сервер.Повторно заполнить сложные объекты javascript от JSON
Проблема, с которой я столкнулся, - это когда, скажем, Refresh ударяется при добавлении записей. Я хочу, чтобы текущие добавленные записи оставались не только отображаемыми на странице, но и в объекте javascript.
Что я до сих пор знаю, что после каждого добавления я использую AJAX для отправки текущего списка на сервер и сохранения его в качестве данных сеанса. Каков наилучший способ получить данные из моей сессии обратно в клиентский javascript-объект?
Лучшее, что я могу придумать, это вставить строку JSON обратно на страницу, а затем использовать javascript на стороне клиента для повторного заполнения объекта javascript. Это будет работать, но если объем данных становится очень большим, я ожидаю, что обработка javascript на стороне клиента будет медленной.
(Обратите внимание, что в моей реальной ситуации мой javascript-объект намного сложнее, чем этот. Он имеет функции, в которых я реализовал наследование и прототипировал методы «получить» и «установить» и, таким образом, динамически построить несколько Иными словами, я не могу просто перезаписать свой объект, используя eval (JSON).)
EDIT: Обратите внимание, что это не просто Обновить, где это входит в игру. Ранее представленные наборы данных могут быть отредактированы, и в это время мне нужно будет повторно заполнить объект javascript на стороне клиента, которые будут на стороне сервера.
Ну, это не только кнопка «Обновить». Все, что было отправлено, может быть позже отредактировано, и в то время подобное решение необходимо для повторного заполнения объекта javascript из данных сервера. – 2009-10-08 20:38:23
ОК. Но пользователь попадает в submit, данные, по-видимому, сохраняются в какой-то базе данных, и в следующий раз, когда страница отображается для редактирования, вы вытаскиваете ее из базы данных и визуализируете страницу, нет? Так что да, это может быть много утомительной работы.Вам необходимо передать данные со страницы (предположительно как JSON) и использовать одни и те же функции JavaScript для воссоздания динамически добавленных div. Возможно, я бы даже рассмотрел уже существующие данные напрямую как HTML (лучший пользовательский интерфейс). Я думал, что исходный вопрос был больше о том, как сохранить еще не сохраненные данные. –
Я могу повторно заполнить страницу без проблем. Это переполняет клиентский объект javascript, который является болью. Не потому, что мне больно писать код, а потому, что я бы хотел как-то заполнить его со стороны сервера, а не на стороне клиента на загрузке страницы. – 2009-10-08 21:00:52