无法使用jQuery andajax数据向<select>附加选项

时间:2018-04-29 14:26:44

标签: jquery html ajax append

我试图添加选项来减少Web服务器提供的数据。我打电话和所有我得到的是[对象对象]添加到下拉列表而不是HTML格式。 $(&#34; div&#34;)。on(&#34; click&#34;,&#34; #addproffbtn&#34;,function(event){         // $(this).parent()。children()选择选择         var thing = $(this);         $就({         url:&#39; / cmanager / getprofesor&#39;,         键入:&#39; GET&#39;,         成功:函数(数据){            for(let index = 0; index&lt; data.length; index ++){               thing.parent()。children()[1] .append($(&#39;&lt; option /&gt;&#39;,{                 value:data [index] .firstName,                 text:data [index] .firstName             }));            }         },         错误:function(jqXHR,textStatus,errorThrown){             警报(&#34;错误,状态=&#34; + textStatus +&#34;,&#34; +             &#34;抛出错误:&#34; + errorThrown         );         }     });         event.stopPropagation();     }) 我也试过了正常情况:         追加(&#39;&lt;选项值=&#34;&#39; +数据[索引] .firstName +&#39;&#34;&gt;&#39; + data [index] .firstName +& #39;&LT; /选项&GT;&#39)

3 个答案:

答案 0 :(得分:0)

thing.parent().children()[1]返回一个dom元素而不是jQuery对象

尝试更改为

thing.parent().children().eq(1)// second child
// OR
thing.parent().find('select')

如果这不起作用,显示你的html结构会有所帮助

答案 1 :(得分:0)

&#13;
&#13;
var my_data=[
     {
      value:'15',
      text:'text 15'
      },
     {
      value:'15',
      text:'text 16'
      }
];

for(var key in my_data){
	var _value=my_data[key].value;
	var _text=my_data[key].text;
	$('#my_select').append($('<option/>',{value : _value }).text(_text));
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


 <select id="my_select">
   <option value="-1">Select item</option>
 </select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果你得到[Object Object],这意味着你要给它整个对象而不是该对象的属性。此外,单独附加一堆选项并不是一个好习惯。相反,您可以创建一个包含所有选项的html字符串,这样您只需要追加一次。

$("div").on("click","#addproffbtn",function (event) {
  event.stopPropagation();
  let options = '';

  $.ajax({
    url : '/cmanager/getprofesor', 
    type : 'GET',
    success : function(data) {
      $.each(data, function(index, item) {
        options += `<option value="${item.firstName}">${item.firstName}<option/>`;
      });
      $('the selector for your select').append(options);      
    }
  });
});