Как я могу сохранить объект массива javascript, сохраненный каким-то образом, чтобы впоследствии его использовать
У меня есть следующая ситуация:
У меня есть страница выбора идентификатора, где пользователь может выбрать идентификатор из показанных идентификаторов на странице. Когда пользователь выбирает идентификатор i, я сохраняю их как разделенное запятыми значение в скрытом поле ввода.
<input type="hidden" values="234,678,987" />
У меня есть кнопка, которая при нажатии открывается диалоговое окно, которое затем отображает выбранные идентификаторы. Иды, показанные здесь, я беру из скрытого поля.
Теперь у меня есть требование хранить идентификатор и имя продукта. Вероятно, в этом случае, что я должен делать, потому что теперь я не могу сохранить эту структуру данных в скрытом поле ввода. Даже если я использую массив javascript, как я могу сохранить этот массив и использовать его в будущем для отображения. Можно ли сохранить объект массива в скрытом поле ввода.... и получить его позже как объект массива снова??
Ответы
Ответ 1
Здесь JSFiddle.
Если вы хотите сохранить объект в поле ввода, вы можете использовать JSON.stringify()
:
//Pass your array (or JSON object) into JSON.stringify:
JSON.stringify([{id:1, product_id: 2, name: 'stack'},
{id: 2, product_id: 2, name: 'overflow'}] )
который даст:
"[{"id":1,"product_id":2,"name":"stack"},{"id":2,"product_id":2,"name":"overflow"}]"
Вы можете сохранить это значение в скрытом поле (или атрибуте данных):
<input type="hidden" id="project" value="[{'id':1,'product_id':2,'name':'stack"',{'id':2,'product_id':2,'name':'overflow'}]" />
Очевидно, вы можете объединить эти шаги (или сделать это через PHP/Rails/...)
$('#project').val(JSON.stringify([1,2,3]));
Затем вы можете декодировать это, используя, например, jQuery:
$.parseJSON($('#project').val());
Это должно позволить вам использовать процесс, который вы используете, но храните объекты Javascript в своих полях ввода. Надеюсь, это поможет!
Ответ 2
Вы можете
Примечание:
Варианты 3 и 5 имеют смысл только в том случае, если вы хотите перейти на другую страницу (на сайте).
Варианты 4 и 5 хороши, если вы хотите закрыть браузер и получить эту информацию в более поздней точке.
Ответ 3
Если вас не беспокоит IE7, вы можете использовать localStorage:
window.localStorage.setItem('myArray', JSON.stringify([234,678,987]));
// retrieve
var myArray = JSON.parse(window.localStorage.getItem('myArray'));
JSON поддерживается современными браузерами. Вы можете добавить его, включив json2.
Ответ 4
Я предполагаю, что вы говорите о сохранении данных после загрузки новой страницы. Вы можете использовать свой текущий подход для хранения данных в виде строки в скрытом вводе, а затем проанализировать эту строку в JavaScript-объекте позже. Другой вариант заключается в том, что ваш код на стороне сервера может создать некоторый встроенный JavaScript, объявляющий требуемый объект JavaScript. Например, если вы используете ASP.NET, ваша страница может иметь что-то вроде этого:
// Assuming "serverSideIds" is declared as a List<string>
<% var serializer = new JavaScriptSerializer(); %>
var ids = <%= serializer.Serialize(serverSideIds) %>;