2016-04-19 146 views
0

我正在用燒瓶做一個小項目。現在,我試着去選擇從JSON object.Despite能夠插入選項添加到一個選擇,我不能訪問自己的價值無法訪問JSON對象的值

這是我的燒瓶代碼:

for dealership in session.query(Dealership).filter_by(ownerID = userId).all(): 
    dealership_list.append({'Name' : dealership.name}) 

return jsonify(names = dealership_list) 

Ajax代碼:

success:function(result){ 
     $.each(result.names, function(Name, value) { 
      $('#dealerships').append($("<option/>", { 
       value: Name, 
       text: value 
      })); 
     }); 
    }, 

回答

1

result.names中的每個項目都是經銷商(由您的查看功能定義)。

每家經銷商是由{"Name":the_name_of_this_dealership}

所以$.each(result.names,function(data){console.log(data)}應打印的每個對象是{"Name":some_dealership_name}

所以只是將其更改爲

success:function(result){ 
    $.each(result.names, function(dealership) { 
     $('#dealerships').append($("<option/>", { 
      value: dealership.Name, 
      text: dealership.Name 
     })); 
    }); 
}, 

的字典 - 或 -

更好的只需將您的Python代碼更改爲僅返回一個名稱列表,因爲這是您使用的唯一數據

dealerships = session.query(Dealership).filter_by(ownerID = userId).all() 
names = [dealership.name for dealership in dealerships] 
return jsonify(names = names) 

,只是改變你的JS來

success:function(result){ 
    $.each(result.names, function(index,a_dealer_name) { 
     $('#dealerships').append($("<option/>", { 
      value: a_dealer_name, 
      text: a_dealer_name 
     })); 
    }); 
} 
1

@JoranBeasley真棒我用的是第二種方案,但補充/更改如下:

$.each(result.names, function(key,name) { 
    $('#dealerships').append($("<option/>", { 
     value: name, 
     text: name 
    })); 
}); 

這是因爲你的解決方案是印索引而不是value.Thanks的幫助!

+0

固定:)謝謝你的頭......我不做太多js –