Javascript 将JSON数据馈送到HTML表单字段中
我有一些建议:Javascript 将JSON数据馈送到HTML表单字段中,javascript,jquery,html,json,forms,Javascript,Jquery,Html,Json,Forms,我有一些建议: "accessories":{ "tableware01":{ "sku":"tableware01", "forceAmountHidden":"1", "upsell":"1", "discountAll":"1", "forceRemove":"1", "percentageDiscount":"12", "fixedDiscount":"1", "forceAmount":"1",
"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 );
});
$.getJSON(“urltoJSONhere”,函数(产品){
$.each(product.extended字段,函数(i){
$(“”)。附件(表格);
});
上面的“extendedFields”更简单,因为我可以使用键“name”和“data”来生成输入字段,但我真的不知道如何使用“附件”来解决上面的问题
谁能给我一些建议,我可以如何处理这个问题,请
其他澄清信息:
我知道这一点:
sku=accsku,
fixedDiscount=accdisc,
百分比折扣=accperc,
折扣全部=增值,
upsell=accupsell,
最小数量=数量,
最大数量=acclimit,
forceAmount=accforce,
forceAmountHidden=accforcehid,
forceRemove=acforcerm
我需要这张表格:
<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">
检查此链接是否有用 您需要使用嵌套的
。每个来访问内部数据
我的一位同事给了我一些帮助,他帮助我创建了一个映射,然后用于构建输入字段。我将发布此消息,以防其他人需要类似的解决方案。该脚本使用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++;
}
var附件={
“桌面01”:{
“sku”:“桌面01”,
“forceAmountHidden”:“1”,
“追加销售”:“1”,
“折扣全部”:“1”,
“强制移除”:“1”,
“百分比折扣”:“12”,
“fixedDiscount”:“1”,
“金额”:“1”,
“最大数量”:“12”,
“结束日期”:“2014-12-12T00:00:00”,
“最小数量”:“1”,
“开始日期”:“2012-12-12T00:00:00”
},
“cla000”:{
“sku”:“cla000”,
“forceAmountHidden”:“1”,
“追加销售”:“1”,
“折扣全部”:“1”,
“强制移除”:“1”,
“百分比折扣”:“23”,
“fixedDiscount”:“1”,
“金额”:“1”,
“最大数量”:“123”,
“结束日期”:“2015-02-03T00:00:00”,
“最小数量”:“1”,
“开始日期”:“2011-02-03T00:00:00”
}
}
变量映射={
sku:“accsku”,
forceAmountHidden:“accforcehid”,
upsell:“accupsell”,
折扣全部:“增值”,
forceRemove:“acforcerm”,
百分比折扣:“accperc”,
修正Discount:“accdisc”,
forceAmount:“accforce”,
最大数量:“acclimit”,
最小数量:“accnum”,
endDate:“endDate”,
开始日期:“开始日期”
}
变量形式=$(“#accform”);
var指数=1;
用于(附件中的var k){
var附件=附件[k];
用于(附件中的var prop){
变量名称=映射[prop]+索引;
$('input[name='+name+']').val(name);
$(“”)。附件(表格);
}
索引++;
}
是您的json格式良好。如果不是,请根据JSONLint将其有效。如果有帮助的话,以下是全部内容:也许我没有充分解释我的问题。我访问数据没有问题,我需要使用数据生成一些表单字段-如上所示。对于附件下的每个对象,我需要使用键/值对对表单字段进行评级。我可以轻松打印:但我的表单无法识别name=“sku”-它需要命名为name=“accsku1”。因此,我的问题是,如果我知道什么键与什么名称匹配,我如何生成这样的字段:不知道我是否满足您的要求,但检查这是否有助于我们实现目标,但我需要在输入字段中使用一个不在JSON中的非常特定的名称。请查看我在原始帖子中的编辑。检查此添加的名称。每个要访问密钥和值,很抱歉,事实并非如此,我可以看到id是使用前缀“acc”和密钥的前3个字符生成的。我必须使用非常具体的名称(在您的示例id中)在表单字段中。我无法使用您使用的模式生成。JSON中的键和我需要的名称之间没有链接。我必须准确生成上面我的附加信息中显示的字段。非常感谢您的帮助,但我需要能够将完全不同的名称映射到每个键/值对。