【发布时间】:2012-04-06 03:18:00
【问题描述】:
我有一个 HTML 表单,我通过 ajax 将它保存到数据库中。为了得到键/值对的查询字符串,我使用了非常方便的serialize函数,像这样:
var myData = $("form#form_id").serialize();
$.ajax({
url: "my_save_script.php",
type: "post",
data: myData,
success: function(msg){
alert(msg);
}
});
现在我想加载一个空白表单,并使用数据库中的数据重新填充它,该数据是从 ajax 调用作为 JSON 字符串传递的。我已经能够获得具有正确键/值对的 Javascript 对象,如下所示:
data = $.parseJSON(data);
data = data[0];
重新填充表单的最简单、最优雅的方法是什么?
请记住,表单的输入元素是文本、选择、复选框和单选。输入元素的名称与数据库列的名称相同,是上述data对象中键/值对的键。这就是为什么serialize 函数对我来说如此有效的原因
【问题讨论】:
-
只有当你设置一个约定时,你才能以一种简单的方式做到这一点,例如用你收到的 JSON 对象的键值来分配你的表单元素的 ID。换句话说,表单和服务器应该遵守一些标准约定。如果是这样,您可以遍历数据以查找并填充每个表单元素。
-
是的,表单元素的
name属性与JSON对象的键值相同。 -
在这种情况下,您可以尝试类似 for (var key in data) { $("[name='" + key + "']").val(data[key]); }。这将使用接收到的对象的属性填充您的表单元素。如果您收到一个键值数组,则需要对数组进行迭代。
-
复选框、单选框和选择呢?
-
关于复选框和单选按钮的要点。它适用于选择,但您需要分别处理复选框和单选按钮。
标签: javascript jquery json forms populate