将JSON数据馈送到HTML表单字段中
Feed JSON data into HTML form fields
我有一些JSON:
"accessories":{
"tableware01":{
"sku":"tableware01",
"forceAmountHidden":"1",
"upsell":"1",
"discountAll":"1",
"forceRemove":"1",
"percentageDiscount":"12",
"fixedDiscount":"1",
"forceAmount":"1",
"maximumQuantity":"12",
"endDate":"2014-12-12T00:00:00",
"minimumQuantity":"1",
"startDate":"2012-12-12T00:00:00"
},
"cla000":{
"sku":"cla000",
"forceAmountHidden":"1",
"upsell":"1",
"discountAll":"1",
"forceRemove":"1",
"percentageDiscount":"23",
"fixedDiscount":"1",
"forceAmount":"1",
"maximumQuantity":"123",
"endDate":"2015-02-03T00:00:00",
"minimumQuantity":"1",
"startDate":"2011-02-03T00:00:00"
}
}
我需要将这些数据推送到表单中。我需要生成的字段必须如下所示:
<input type="hidden" name="accsku1">
<input type="hidden" name="accdisc1">
<input type="hidden" name="accperc1">
<input type="hidden" name="accreg1">
<input type="hidden" name="accupsell1">
<input type="hidden" name="accnum">
<input type="hidden" name="acclimit1">
<input type="hidden" name="accforce1">
<input type="hidden" name="accforcehid1">
<input type="hidden" name="accforcerm1">
我无法控制JSON中的键,也无法控制表单字段的名称,这些都需要保留。我知道哪些字段对应于JSON中的哪些键,即"accdisc"是"fixedDiscount"。我需要将JSON中的正确值插入到字段的值中。此外,字段根据附件的数量进行迭代(从1开始),即我的表单将继续使用
<input type="hidden" name="accsku2">
<input type="hidden" name="accdisc2">
等等
我对使用JSON还很陌生,但我已经完成了这个项目,直到现在我还不确定如何处理这个问题。我希望能够生成字段,因为我不知道我会有多少配件。我想知道我是否可以创建某种地图,在那里我可以说"sku匹配输入accsku",然后添加索引?
JSON是一个较大文件的片段,其中包含许多具有不同密钥的产品数据,这是我如何将其拉入表单的示例:
$.getJSON("urltoJSONhere",function(product){
$.each(product.extendedFields, function(i){
$( "<input type='hidden' name='"+this.name+"' value='"+this.data+"'>" ).appendTo( form );
});
上面的"extendedFields"要简单得多,因为我可以使用键"name"answers"data"来生成输入字段,但我真的不知道如何用"accessories"来解决上面的问题。
有人能给我一些建议吗?
需要澄清的附加信息:
我知道:sku=accsku,fixedDiscount=accdisc,percentageDiscount=accperc,discountAll=accreg,upsell=accupsell,minimumQuantity=accnum,maximumQuantity=acclimit,forceAmount=accforce,forceAmountHidden=强制隐藏,forceRemove=强制
我需要这个在我的表格中:
<input type="hidden" name="accsku1" value="tableware01">
<input type="hidden" name="accdisc1" value="1">
<input type="hidden" name="accperc1" value="12">
<input type="hidden" name="accreg1" value="1">
<input type="hidden" name="accupsell1" value="1">
<input type="hidden" name="accnum1" value="1">
<input type="hidden" name="acclimit1" value="12">
<input type="hidden" name="accforce1" value="1">
<input type="hidden" name="accforcehid1" value="1">
<input type="hidden" name="accforcerm1" value="1">
<input type="hidden" name="accsku2" value="cla000">
<input type="hidden" name="accdisc2" value="1">
<input type="hidden" name="accperc2" value="23">
<input type="hidden" name="accreg2" value="1">
<input type="hidden" name="accupsell2" value="1">
<input type="hidden" name="accnum2" value="1">
<input type="hidden" name="acclimit2" value="123">
<input type="hidden" name="accforce2" value="1">
<input type="hidden" name="accforcehid2" value="1">
<input type="hidden" name="accforcerm2" value="1">
如果有帮助,请查看此链接。
您需要使用嵌套的.each
来访问内部数据。
http://jsfiddle.net/pE6yE/9/
我得到了一位同事的帮助,他帮助我创建了一个映射,然后用于构建输入字段。我发布这个以防其他人需要类似的解决方案。该脚本适用于id为"accform"的表单。
var accessories = {
"tableware01": {
"sku": "tableware01",
"forceAmountHidden": "1",
"upsell": "1",
"discountAll": "1",
"forceRemove": "1",
"percentageDiscount": "12",
"fixedDiscount": "1",
"forceAmount": "1",
"maximumQuantity": "12",
"endDate": "2014-12-12T00:00:00",
"minimumQuantity": "1",
"startDate": "2012-12-12T00:00:00"
},
"cla000": {
"sku": "cla000",
"forceAmountHidden": "1",
"upsell": "1",
"discountAll": "1",
"forceRemove": "1",
"percentageDiscount": "23",
"fixedDiscount": "1",
"forceAmount": "1",
"maximumQuantity": "123",
"endDate": "2015-02-03T00:00:00",
"minimumQuantity": "1",
"startDate": "2011-02-03T00:00:00"
}
}
var map = {
sku: "accsku",
forceAmountHidden: "accforcehid",
upsell: "accupsell",
discountAll: "accreg",
forceRemove: "accforcerm",
percentageDiscount: "accperc",
fixedDiscount: "accdisc",
forceAmount: "accforce",
maximumQuantity: "acclimit",
minimumQuantity: "accnum",
endDate:"endDate",
startDate:"startDate"
}
var form = $("#accform");
var index = 1;
for (var k in accessories) {
var accessory = accessories[k];
for (var prop in accessory) {
var name = map[prop] + index;
$('input[name=' + name + ']').val(name);
$( "<input type='text' name='"+name+"' value='"+accessory[prop]+"'>" ).appendTo( form );
}
index++;
}
- 可以't让我的if语句处理js中的html表单输入
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 多级HTML表单
- 使用html表单中的参数调用JavaScript函数
- javascript弹出窗口没有正确加载html表单
- Javascript/RegEx未验证HTML表单
- JavaScript”;复制“;HTML表单
- 使用Web Html表单创建Javascript数组
- 用PHP发送html表单和文件附件
- 单击鼠标,用MySQL数据填充html表单输入字段
- 从HTML表单发布blob的表单输入类型是什么
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- JavaScript-HTML表单到JSON(空值)和格式
- HTML表单将数据POST到MySQL
- 获取html表单信息并使用ajax将其推送到PHP
- 使用PHP通过HTML表单选项选择器过滤MYSQL结果
- javascript,HTML表单:单击按钮插入NULL
- 如何在HTML表单中提交我的下拉选择
- 将HTML表单发布到iframe会导致浏览器历史记录出现问题