Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在输入隐藏字段中存储返回json值_Javascript_Jquery_Json - Fatal编程技术网

Javascript 在输入隐藏字段中存储返回json值

Javascript 在输入隐藏字段中存储返回json值,javascript,jquery,json,Javascript,Jquery,Json,我想知道是否可以将返回的json存储在一个隐藏的输入字段中。例如,这就是我的json返回: [{"id":"15aea3fa","firstname":"John","lastname":"Doe"}] 我只想将id存储在一个隐藏字段中,以便以后可以引用它来处理它 示例:我有这样的东西: <input id="HiddenForId" type="hidden" value="" /> $('#my-hidden-field').val(theObject[0].id); 只需

我想知道是否可以将返回的json存储在一个隐藏的输入字段中。例如,这就是我的json返回:

[{"id":"15aea3fa","firstname":"John","lastname":"Doe"}]
我只想将id存储在一个隐藏字段中,以便以后可以引用它来处理它

示例:我有这样的东西:

<input id="HiddenForId" type="hidden" value="" />
$('#my-hidden-field').val(theObject[0].id);

只需使用javascript设置隐藏字段:

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

还是我遗漏了什么?

您可以将其存储在一个隐藏字段中,或者将其存储在一个javascript对象中(我的首选),因为可能通过javascript进行访问

注意:由于您有一个数组,因此对于第一个元素(如您所拥有的),它将作为
myvariable[0]
访问

编辑显示示例:

clip...
            success: function(msg)
            {
                LoadProviders(msg);
            },
...

var myvariable ="";

function LoadProviders(jdata)
{
  myvariable = jdata;
};
alert(myvariable[0].id);// shows "15aea3fa" in the alert
编辑:创建此页面:演示上述内容。本例假设您已经在数组中正确返回了命名字符串值,并且只需要在每个OP问题中存储它。在本例中,我还将返回的第一个数组的值(每个操作示例)作为文本放入div中

我不确定为什么会将其视为“复杂”,因为我认为没有更简单的方法来处理此数组中的这些字符串。

如果使用,您可以简单地以字符串格式存储对象

myHiddenText.value = JSON.stringify( myObject );
然后,您可以使用

myObject = JSON.parse( myHiddenText.value );

但是,如果您不打算在页面提交过程中传递此值,那么可能会更容易,如果您将其作为一个全局javascript变量折叠起来,您将节省大量的序列化工作。

您可以使用
input.value=JSON.stringify(obj)
将对象转换为字符串。
需要时,可以使用
obj=JSON.parse(input.value)


JSON对象在现代浏览器上可用,或者您可以从

使用json2.js库。返回值似乎在数组中?这有点奇怪。。。还要注意的是,某些浏览器将允许从跨域请求解析该请求(当您有顶级JSON对象时,这是不正确的)

无论如何,如果这是一个数组包装器,您将需要如下内容:

<input id="HiddenForId" type="hidden" value="" />
$('#my-hidden-field').val(theObject[0].id);
稍后可以通过对同一字段的简单.val()调用来检索它。这看起来真的有点奇怪。隐藏字段不会在页面请求中持久存在,所以为什么不将其保存在您自己的(伪命名空间)值存储桶中呢?例如:

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

这将使您可以从任何地方使用它,而无需任何黑客输入字段管理。对于简单的值存储,它也比修改DOM有效得多。

虽然我已经看到了建议的方法的使用和工作,但我认为仅使用JSON.stringify设置隐藏字段的值会破坏HTML

在这里,我将解释我的意思:

<input type="hidden" value="{"name":"John"}">
现在,该值可以安全地存储在输入隐藏类型中,如下所示:

var scheduletimeid = $('#HiddenForId').val();
<input type="hidden" value="%7B%22name%22%3A%22John%22%7D">

奇怪的是,没有人对否决票发表评论,认为这是一个可行的解决方案。显然,您也可以使用类似$(myfieldselector).val(myvalue)的内容将值放入隐藏字段中;也我都注意到了。数组是我选择Javascript对象的原因。JS是前端,JSP是服务器。如果您只想将json服务器端设置为前端不可访问,该怎么办?那么,你将如何在隐藏字段中存储JSON?@user2696258-另一个问题,请将其作为一个新问题发布,如果你发现它可能有助于你的新问题,请参考这个问题,以及你尝试的代码。也请看一下:如果你需要在表单post中返回复杂对象,这是唯一可以使用的方法。这应该是公认的答案(因为大多数搜索和查找此问题的人都希望这样做)。到目前为止,最好的解决方案应该是公认的答案。哇,最好的解决方案我对JSON.stringify有一个问题,持续了2个小时,然后我找到了这个令人震惊的答案。谢谢。在使用
input
元素时为我工作,但在使用
div
时为我工作。很好的解决方案。我使用了JSON.stringify(),但该值没有出现在输入元素上。但我现在可以使用这个非常棒的解决方案了。这个方法是否可以在异步请求之后工作,并且可以从动态生成的元素中访问?e、 g.LoadRemoteDataFunction(…).then(保存到伪Bucket)--->DynamicallyGenerateFormPugin(异步获取的访问数据);
<div id="something" data-json="%7B%22name%22%3A%22John%22%7D"></div>
> var data = JSON.parse(decodeURIComponent(div.getAttribute("data-json")))
> console.log(data)
> Object {name: "John"}