为什么我的选择列表没有填充?
我正在试图从我的数据库中填充项目的选择列表。我已经确认(使用“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”语句之后,我在警报弹出窗口中获得正确的数据。
您可以直接增加价值,而无需使用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);
添加的文本的选项,以及
我想初始化它应该是值:
option.value = dbValue;
根据w3Schools reference for javascript and option。我想我自己曾经遇到过这样的事情。
我认为这里的问题可能是你没有设置文本选项?所以他们被添加,但你不能看到他们?
option.text = dbValue;
不,不是。使用Firebug,JavaScript会创建“select”元素,但不会添加选项。 – Brian 2014-08-29 20:50:55
我创建了这个小提琴,使你的一些数据变得虚弱:http://jsfiddle.net/ruv5mycy/可能有帮助吗? – 2014-08-29 20:52:26
按照你的例子,我添加了一个数组,并使用了.each,并且选择正确填充。我的optionGrapper.php正在返回'[“one”,“two”,“three”,“four”,“five”]'(减去单引号)。我认为这是正确的,不是吗?我在PHP端使用了json_encode(),并且我假定,由于警报显示正确的信息,所以jQuery正确解码了JSON。 – Brian 2014-08-29 21:05:25
你用萤火虫检查了你的代码吗?你有什么错误吗? – Farshad 2014-08-29 20:43:17
http://stackoverflow.com/questions/740195/adding-options-to-a-select-using-jquery-javascript – Aguardientico 2014-08-29 20:43:41
@Farshad在Firebug中没有错误。 – Brian 2014-08-29 20:44:10