在 jQuery 中从 JSON 加载 HTML 控件(即 Ajax serialiseArray 的逆向)

Posted

技术标签:

【中文标题】在 jQuery 中从 JSON 加载 HTML 控件(即 Ajax serialiseArray 的逆向)【英文标题】:Loading HTML controls from JSON in jQuery (that is, reverse of Ajax serialiseArray) 【发布时间】:2010-09-28 17:10:30 【问题描述】:

我想获取一组包含在 DIV 中的控件(INPUT、SELECT、TEXTAREA),并通过 Ajax 将它们的值作为 JSON 发送到服务器。使用 jQuery 的serializeArray,这很容易。

然后我希望服务器以发送的相同结构的 JSON 进行响应,并使用提供的 JSON 重新加载控制值。我在 jQuery 文档中找不到任何可以使此操作变得简单的内容。

是我遗漏了什么还是我需要自己构建它?

【问题讨论】:

【参考方案1】:

为什么不让服务器返回相同的:controlname:value 结构,然后在 jQuery 中读取它并使用类似:

$("*[name='" + controlname + "']").val( value);

或者更简单:controlID:value

$("#" + controlID).val( value);

【讨论】:

是的,返回与 serializeArray 生成的结构相同的结构是我在问题中指出的,它基本上是一个键/值数组。【参考方案2】:

表单控件未绑定到 JSON 数据。

JSON 数据可以用于任何目的,因此您必须构建一个函数来获取 JSON 结果并自己处理表单元素。

表单太复杂了,不能指望 jQuery 原生地处理这个问题。在过去,我编写了框架来从基于 XML/JSON 的定义构建表单并使用它们来处理数据传输。自己做并不难,但它不是内置的。

我快速浏览了这些插件,也没有注意到有什么特别的功能,尽管这听起来确实是个好主意。这听起来更像是 Ext.js 支持的东西。

【讨论】:

我知道控件不绑定到 JSON。 JSON 是暂时的,它仅在调用 serializeArray 并且特定 JSON 在请求发送后消失时才存在。我想在响应中对 JSON 执行 serializeArray 的反向操作。

以上是关于在 jQuery 中从 JSON 加载 HTML 控件(即 Ajax serialiseArray 的逆向)的主要内容,如果未能解决你的问题,请参考以下文章

在jQuery中从数组创建html表

在选择选项 html 中从数据库加载数据 - Laravel

在Angular js中从jquery中选中还是取消选中?

在jQuery中从JSON添加div?

在 jQuery 中从 JSON 值创建字符串

在 Laravel 4 中从 Jquery Ajax Json 中检索值