0
私はsilverstripe関数から配列を返すAjax呼び出しを持っています。javascript fill optogroupedドロップダウン
{
"null":"-- Person/choose Email --",
"System":{
"default":"[email protected]"},
"Office":{
"21":"[email protected]",
"22":"[email protected]",
"23":"[email protected]",
"24":"[email protected]"
},
"Workshop":{
"22":"[email protected]"
}
}
オプショングループ化されたドロップダウンを成功させようとしています。
$.ajax({
url: "StringImage_Ajax/dropdownSource",
type: "POST",
dataType: "json",
async:false
}).done(function(data){
dddata = JSON.stringify(data.string);
console.log('data = ' + dddata);
var dropdown = $('#StringEmail');
/*$.each(dddata, function (key, cat) {
console.log(key + ' _ ' + cat);
var group = $('<optgroup>',{label:key});
$.each(cat,function(i,item) {
$("<option/>",{value:item.id,text:item.name})
.appendTo(group);
});
group.appendTo(dropdown);
});*/
});
は、どのように各ました - 機能が正しく動作するように変更するには?
ありがとうございます。
UPDATE:@Endless動作するコードに
感謝:
var dropdown = $('#StringEmail').empty();
$.each(dddata, function (key, cat) {
if (typeof cat === 'string') {
$('<option/>', {value:key,text:cat}).appendTo(dropdown)
return
}
var group = $('<optgroup>', {label: key});
$.each(cat, function(value, text) {
$("<option/>", {value:value,text:text}).appendTo(group);
});
group.appendTo(dropdown);
});
asyncをfalseに設定しないでください。それは廃止されました... – Endless
返されたデータのネストされた 'object'を反復処理する必要があります。これは配列ではありません。 (obj.hasOwnProperty(key){//}} 'を使うか、' Object.keys(obj) 'を使ってオブジェクトのキーを反復処理することができます。 '要素を動的に変更しました。 –