Мне было интересно, можно сохранить возвращаемый JSON в скрытом поле ввода. Например, вот что возвращает мой json:
[{"id":"15aea3fa","firstname":"John","lastname":"Doe"}]
Я хотел бы просто сохранить идентификатор в скрытом поле, чтобы я мог ссылаться на него позже, чтобы что-то с ним сделать.
Пример: у меня есть что-то вроде этого:
<input id="HiddenForId" type="hidden" value="" />
и хотел бы, чтобы jquery возвращал мне значение позже так:
var scheduletimeid = $('#HiddenForId').val();
Вы можете хранить его в скрытом поле, ИЛИ хранить его в объекте javascript (мое предпочтение), так как вероятный доступ будет осуществляться через javascript.
ПРИМЕЧАНИЕ: поскольку у вас массив, доступ к нему будет осуществляться как myvariable[0]
для первого элемента (как у вас).
EDIT показать пример:
clip...
success: function(msg)
{
LoadProviders(msg);
},
...
var myvariable ="";
function LoadProviders(jdata)
{
myvariable = jdata;
};
alert(myvariable[0].id);// shows "15aea3fa" in the alert
EDIT: Создал эту страницу:http://jsfiddle.net/GNyQn/ для демонстрации вышесказанного. В этом примере делается предположение, что вы уже правильно вернули именованные строковые значения в массив и вам просто нужно сохранить его в соответствии с вопросом OP. В примере я также поместил значения первого возвращенного массива (в соответствии с примером OP) в div как текст.
Я не уверен, почему это было расценено как "сложное", поскольку я не вижу более простого способа обработки этих строк в массиве.
Если вы используете JSON Serializer , вы можете просто сохранить свой объект в строковом формате как таковой
myHiddenText.value = JSON.stringify( myObject );
Вы затем можно вернуть значение с помощью
myObject = JSON.parse( myHiddenText.value );
. Однако, если вы не собираетесь передавать это значение между отправками страниц, это может быть проще для вас, и вы сэкономите много времени на сериализации, если просто уберете его как глобальная переменная javascript.
Похоже, что возвращаемое значение находится в массиве? Это несколько странно ... и также имейте в виду, что некоторые браузеры позволяют анализировать это из междоменного запроса (что неверно, когда у вас есть объект JSON верхнего уровня).
В любом случае, если это оболочка массива, вам понадобится что-то вроде этого:
$('#my-hidden-field').val(theObject[0].id);
Вы можете позже получить ее с помощью простого вызова .val () в том же поле. Честно говоря, это выглядит странно. Скрытое поле не будет сохраняться при запросах страницы, так почему бы вам просто не сохранить его в собственном (псевдо-пространстве имен) ведре значений? Например,
$MyNamespace = $MyNamespace || {};
$MyNamespace.myKey = theObject;
Это сделает его доступным из любого места, без какого-либо хакерского управления полями ввода. Это также намного эффективнее, чем модификация DOM для простого хранения значений.
просто установите скрытое поле с помощью javascript:
document.getElementById('elementId').value = 'whatever';
или я что-то пропущу?
Вы можете использовать input.value = JSON.stringify (obj)
для преобразования объекта в строку.
И когда он вам понадобится, вы можете использовать obj = JSON.parse (input.value)
Объект JSON доступен в современных браузерах, или вы можете использовать библиотеку json2.js из json .org