2014-08-29 100 views
0

我正在试图从我的数据库中填充项目的选择列表。我已经确认(使用“alert()”框)jquery .getJSON函数正在获取正确的数据,但是选择列表仍然没有填充。为什么我的选择列表没有填充?

var selectBox = document.createElement("select"); 
$.getJSON('optionGrabber.php', function(data) { 
    $.each(data, function(key, dbValue) { 
     var option = document.createElement("option"); 
     option.setAttribute("value",dbValue); 
     selectBox.appendChild(option); 
    }); 
}); 
myDiv.appendChild(selectBox); 

就像我说的,当我粘贴一个“alert(dbValue);”紧随“.each”语句之后,我在警报弹出窗口中获得正确的数据。

+0

你用萤火虫检查了你的代码吗?你有什么错误吗? – Farshad 2014-08-29 20:43:17

+0

http://stackoverflow.com/questions/740195/adding-options-to-a-select-using-jquery-javascript – Aguardientico 2014-08-29 20:43:41

+0

@Farshad在Firebug中没有错误。 – Brian 2014-08-29 20:44:10

回答

1

您可以直接增加价值,而无需使用setAttribute方法是这样的:

var selectBox = document.createElement("select"); 
$.getJSON('optionGrabber.php', function(data) { 
    $.each(data, function(key, dbValue) { 
     var option = document.createElement("option"); 
     option.value = dbValue; 
     option.text = dbValue; 
     selectBox.appendChild(option); 
    }); 
}); 
myDiv.appendChild(selectBox); 

添加的文本的选项,以及

Working Fiddle

+0

这是一个不错的功能,但我的下拉菜单仍然没有填充。 – Brian 2014-08-29 20:48:42

+0

@Brian:添加了一个工作小提琴...也许在其他地方的一个问题...你可以显示数据dbValue – V31 2014-08-29 20:54:50

0

我认为这里的问题可能是你没有设置文本选项?所以他们被添加,但你不能看到他们?

option.text = dbValue; 
+0

不,不是。使用Firebug,JavaScript会创建“select”元素,但不会添加选项。 – Brian 2014-08-29 20:50:55

+0

我创建了这个小提琴,使你的一些数据变得虚弱:http://jsfiddle.net/ruv5mycy/可能有帮助吗? – 2014-08-29 20:52:26

+0

按照你的例子,我添加了一个数组,并使用了.each,并且选择正确填充。我的optionGrapper.php正在返回'[“one”,“two”,“three”,“four”,“five”]'(减去单引号)。我认为这是正确的,不是吗?我在PHP端使用了json_encode(),并且我假定,由于警报显示正确的信息,所以jQuery正确解码了JSON。 – Brian 2014-08-29 21:05:25

相关问题