сохранить возвращаемое значение json во входном скрытом поле

Мне было интересно, можно сохранить возвращаемый JSON в скрытом поле ввода. Например, вот что возвращает мой json:

[{"id":"15aea3fa","firstname":"John","lastname":"Doe"}]

Я хотел бы просто сохранить идентификатор в скрытом поле, чтобы я мог ссылаться на него позже, чтобы что-то с ним сделать.

Пример: у меня есть что-то вроде этого:

<input id="HiddenForId" type="hidden" value="" />

и хотел бы, чтобы jquery возвращал мне значение позже так:

var scheduletimeid = $('#HiddenForId').val();
47
задан Davide Pastore 12 December 2015 в 16:47
поделиться

5 ответов

Вы можете хранить его в скрытом поле, ИЛИ хранить его в объекте 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 как текст.

Я не уверен, почему это было расценено как "сложное", поскольку я не вижу более простого способа обработки этих строк в массиве.

19
ответ дан 26 November 2019 в 19:10
поделиться

Если вы используете JSON Serializer , вы можете просто сохранить свой объект в строковом формате как таковой

myHiddenText.value = JSON.stringify( myObject );

Вы затем можно вернуть значение с помощью

myObject = JSON.parse( myHiddenText.value );

. Однако, если вы не собираетесь передавать это значение между отправками страниц, это может быть проще для вас, и вы сэкономите много времени на сериализации, если просто уберете его как глобальная переменная javascript.

13
ответ дан 26 November 2019 в 19:10
поделиться

Похоже, что возвращаемое значение находится в массиве? Это несколько странно ... и также имейте в виду, что некоторые браузеры позволяют анализировать это из междоменного запроса (что неверно, когда у вас есть объект JSON верхнего уровня).

В любом случае, если это оболочка массива, вам понадобится что-то вроде этого:

$('#my-hidden-field').val(theObject[0].id);

Вы можете позже получить ее с помощью простого вызова .val () в том же поле. Честно говоря, это выглядит странно. Скрытое поле не будет сохраняться при запросах страницы, так почему бы вам просто не сохранить его в собственном (псевдо-пространстве имен) ведре значений? Например,

$MyNamespace = $MyNamespace || {};
$MyNamespace.myKey = theObject;

Это сделает его доступным из любого места, без какого-либо хакерского управления полями ввода. Это также намного эффективнее, чем модификация DOM для простого хранения значений.

0
ответ дан 26 November 2019 в 19:10
поделиться

просто установите скрытое поле с помощью javascript:

document.getElementById('elementId').value = 'whatever';

или я что-то пропущу?

-1
ответ дан 26 November 2019 в 19:10
поделиться

Вы можете использовать input.value = JSON.stringify (obj) для преобразования объекта в строку.
И когда он вам понадобится, вы можете использовать obj = JSON.parse (input.value)

Объект JSON доступен в современных браузерах, или вы можете использовать библиотеку json2.js из json .org

20
ответ дан 26 November 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: