1

您好,我有以下 JSON,我正在使用 Javascript 来填充隐藏的输入:

$("#myHiddenInput").val(data);

var data =   
   [
      {
        "id":"522",
        "description":"Whitesands Bay"
      },
      { 
        "id":"590",
        "description":"Eastbourne Beachy Head"
      }
    ]

问题是在我的 HTML 页面中,该输入字段的代码如下所示:

<input id="_myHiddenInput" type="hidden" name="myHiddenInput" value="[{"id":"522","description":"Whitesands Bay"},{"id":"590","description":"Eastbourne Beachy Head"}]">

这不是有效的 HTML,它必须是单引号,value='"...JSON....."'因为当我将表单提交给具有该字段的 PHP 时,我没有从 PHP 获得任何结果。似乎浏览器总是强制 value 属性以这样的双引号开头value=""...JSON... ""

请问我该如何解决?

4

1 回答 1

0

我建议不要将整个对象传递到单个隐藏字段中。您应该将对象中的每个项目存储为唯一的隐藏字段,当您提交表单时将对其进行序列化。

var data = {
    "id": "522",
    "description": "Whitesands Bay"
}, {
    "id": "590",
    "description": "Eastbourne Beachy Head"
}];

$.each(data, function (i) {
    $("form").append('<input type="hidden" name="id[]" value="' + data[i]['id'] + '" /><input type="hidden" name="desc[]" value="'+data[i]['description']+'" />');
});

name="id[]"or语法告诉 PHP 序列化隐藏输入数组的name="description[]"值。如果使用该GET方法提交表单,则ID和描述的序列化值将分别存储在全局变量$_GET['id']和数组中$_GET['description']

创建了一个带有扭曲的 Fiddle - 隐藏的输入更改为文本,因此您可以可视化隐藏字段将如何添加到表单中。

我还想提供一个友好(且不那么繁琐)的建议:如果 ID 和描述都是从数据库中获取的,您可能只想返回 ID 本身,然后让在表单提交时执行的 PHP 脚本检索描述。这可以为您节省大量工作。

于 2013-10-19T11:27:41.960 回答