在 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 的逆向)的主要内容,如果未能解决你的问题,请参考以下文章