2016-04-19 103 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 –