2012-08-16 55 views
1

有我的代码:jQuery的JSON和每个

$.ajax({ 
    url: "?module=gestionApplication&action=importScenario&fichierconf="+$fichierconf, 
    dataType: "json", 
    success: function(data) { 


     $("#dialog-scenario input#fichierxml").val(data.FICHIERXML); 
     $("#dialog-scenario input#fichierproxy").val(data.FICHIERPROXY); 
     $("#dialog-scenario select#portail").val(data.PORTAIL); 
     $("#dialog-scenario select#typemaj").val(data.MONITORING); 
     $("#dialog-scenario input#periodemaintenance").val(data.MAINT); 
     $("#dialog-scenario input#nomdns").val(data.DNSATESTER); 

它运作良好,但我得到了像同类型的40行是有可能做同样的动作,而不知道数据后的字符串。 ?

我会做类似

data.each(function(dataName) { 
    $("#dialog-scenario inputORselect#"+dataName).val(data.dataname); 
}); 

THX对您有所帮助

回答

1

元素的名称和数据属性之间创建一个映射:

var map, 
    prop; 

map = { 
    "typemaj" : "MONITORING", 
    "periodemaintenance" : "MAINT" 
} 

然后你就可以遍历属性来设置它们的值。

for(prop in map) { 
    $("#dialog-scenario inputORselect#" + prop).val(data[ map[prop] ]); 
} 
+0

我一直忘记有关'$ .each'的地图,这可能更有效。尼斯解决方案布鲁诺。 – 2012-08-16 10:13:24

1
$.each(data, function(key, value) { 
    // do your processing here 
}); 
0
success: function(data) { 
    $.each(data, function(i, dataName) { 
     $("#dialog-scenario inputORselect#"+dataName).val(data.dataname); 
    }); 
} 
1

就快,要记住,一个id始终是唯一的,也不需要关于它的父母的信息。

$.each(data, function(name, value) { 
    $("#"+name.toLowerCase()).val(value); 
});