编辑:问题定义上存在一个概念错误和一个技术错误,因此最好关闭该问题而不是对其进行清理。当我有时间重新定义问题时,我会再次发布它。 由于不具体,请帮助投票结束。
有很多关于将复杂的 HTML 表单序列化为其相应的 JavaScript 对象的信息和问题(例如 this )。
这是该过程的示例:具有此表单
<form>
<input type="text" name="scalar" value="1">
<input type="text" name="array[0]" value="1">
<input type="text" name="array[1]" value="2">
<input type="text" name="array[2]" value="3">
<input type="text" name="object[subscalar]" value="1">
</form>
并从中获取这个 javascript 对象
{
"scalar": 1,
"array": [1, 2, 3],
"object": {
"subscalar": 1
}
}
但是我怎样才能做相反的工作呢?
我们的目标是针对单独的浏览器窗口执行 native POST。我们有一个复杂的 JavaScript 对象,并且通过 AJAX POST 发送,因此我们直接使用该对象作为 jQuery.ajax 数据参数。但现在我们需要在 DOM 中创建一个真实的表单,其中包含具有所有括号语法的输入和值,然后针对特定框架本地提交它。
jQuery 的使用是可选的。已经存在的方法、库等比自定义片段更可取。这并不是因为无法编写代码,而是因为不确定我们是否需要重新发明轮子。
提前致谢。
最佳答案
function parseform(elem,parent=""){
this.html="";
this.parent=parent;
if(typeof elem=="Array"){
var counter=0;
elem.forEach(function(a){
this.html+=new parseform(a,this.parent+"["+counter+"]").html;
counter++;
});
}
if(typeof elem=="String"){
this.html+="<input name='"this.parent+"["+elem+"]' />";
}
//object in progress
if(typeof elem=="Object"){
for (var key in elem) {
if (p.hasOwnProperty(key)) {
this.html += new parseform(elem[key],this.parent="["+key+"]").html;
}
}
}
}
像这样使用:
code=new parseform(yourjsondecoded).html;
我知道你不需要代码,但我不认为有一个 API 可以用于如此具体的东西
关于javascript - 如何将多级 JavaScript 对象反序列化为 HTML 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39373987/