2014-08-29 96 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

相關問題