无法访问JSON对象的值

Cant access value of JSON object

本文关键字:对象 JSON 访问      更新时间:2023-09-26

我用烧瓶做了一个小项目。现在,我正在尝试为JSON对象的select添加选项。尽管可以插入选项,但我无法访问它们的值

这是我的烧瓶代码:

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
          }));
      });
    },

result.names中的每个项目都是一个经销商(由视图函数定义)。

每个经销商都是一个由{"Name":the_name_of_this_dealership} 组成的dict

所以$.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
      }));
  });
}

@JoranBeasley太棒了!我使用了第二个解决方案,但添加/更改了以下内容:

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

这是因为您的解决方案打印的是索引而不是值。谢谢你的帮助!