2014-06-18 255 views
0

這是我在我的網頁上遇到的一個非常奇怪的問題。我目前有一個使用perl和javascript填充數據庫數據的下拉列表,但下拉列表不顯示我從數據庫收到的值。下拉列表中的值不顯示

我目前擁有的代碼如下:

my $dataX = ${ConnectToDatabase($main::edsUGCar, $main::databaseEnv)}; 
$resultSet = $dataX->Execute("select vendor from dex_vendor_info group by vendor"); 

my @list_of_vendors; 
while(!$resultSet->EOF) { 
push @list_of_vendors, $resultSet->Fields("vendor")->Value; 
    $resultSet->MoveNext; 
} 

$list_of_vendors_json = encode_json(\@list_of_vendors); 

print <<ONE; 
<html> 
<body> 
<h4> Test Vendor Array Javascript </h4> 

<p id="demo"</p> 
<form id="myForm"> 
<select id="selectNumber"> 
<option>Choose a Vendor</option> 
<script type="text/javascript" language="JavaScript"> 
var list_of_vendors = $list_of_vendors_json; 
var select = document.getElementById("selectNumber"); 
for(var i = 0; i < list_of_vendors.length; i++) { 
    var opt = list_of_vendors[i]; 
    var el = document.createElement("option"); 
    el.text = opt; 
    el.value = opt; 
    select.appendChild(el); 
}​ 
</script> 
</select> 
</form> 
</body> 
</html> 
ONE 

的HTML源代碼,當我檢查的下拉列表中元素的輸出顯示:

<SELECT id=selectNumber> <OPTION selected>Choose a Vendor</OPTION> 
<SCRIPT language=JavaScript type=text/javascript> 
var list_of_vendors = ["3D Systems","3DSystems","3M"]; 
var select = document.getElementById("selectNumber"); 
for(var i = 0; i < list_of_vendors.length; i++) { 
    var opt = list_of_vendors[i]; 
    var el = document.createElement("option"); 
    el.text = opt; 
    el.value = opt ; 
    select.appendChild(el); 
} 
</SCRIPT> 
<OPTION value="3D Systems"></OPTION> # Info Missing here after the `>` 
<OPTION value="3DSystems"></OPTION> 
<OPTION value="3M></OPTION> 
</SELECT> 
+2

包括['use strict;'](http://perldoc.perl.org/strict.html)和['use warnings;'](http://perldoc.perl.org/warnings.html)每個perl腳本的頂部。對後者很好,但是真的需要前者,而且你已經足夠長時間已經聽過幾次了。 – Miller

+0

當我把'嚴格'使用時,我的網站停止工作,所以我把它關掉了 – koala421

+0

['use strict;'](http://perldoc.perl.org/strict.html)是爲了告訴你關於你的代碼的問題。而不是忽略問題,修復你的代碼! – Miller

回答

0

您是否嘗試過移動腳本在選擇標籤之外?該DTD(HTML 4)指出,選擇標籤具有以下結構:

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector --> 

這基本上意味着你不能忽略打開或關閉<select>標籤和一個<select>標籤只能包含<optgroup><option>標籤,沒什麼否則(無<script>

+0

我只是試過,它仍然沒有給我正確的輸出......我認爲有'document.createElement(「選項」)'部分的JavaScript的錯誤,因爲我沒有得到文本部分後''''''選項'標籤 – koala421

+0

我複製了輸出並試圖查看它。在你的輸出結尾處有一些奇怪的符號,是那些實際存在的?如果我刪除它們,一切正常。 – CannibalGorilla

+0

是的,這與我一樣,這就是爲什麼它有點怪異。這些符號來自我不知道在哪裏..我想這與使用JSON有關...... – koala421

0

在部分:

<script type="text/javascript"> 
    var list_of_vendors = $list_of_vendors_json; 
    var select = document.getElementById("selectNumber"); 
    for(var i = 0; i < list_of_vendors.length; i++) { 
     var opt = list_of_vendors[i]; 
     var el = document.createElement("OPTION"); 

el.appendChild(document.createTextNode(opt)); < - 這行代碼不見了!

 el.text = opt 
     el.value = opt 
     select.appendChild(el); 
    } 
</script> 

感謝CannibalGorilla的建議......感謝它。

+0

這是回答解決你的問題?如果是這樣,請編輯它以使其更加明顯。請儘快接受它作爲解決方案,以便其他人可以看到問題已關閉。 – Borodin

+0

@Borodin它說我必須等待2天才能接受這個答案作爲答案... – koala421