2016-07-12 20 views
0

我有這樣的代碼創建PHP中的數組,然後使用json_encode爲陣創建動態選擇使用元素的JavaScript和PHP陣列/ JSON

<?php 
//create array of items for nominal code box 
$nominalCodes = array(); 
$array = Statuses('Nominal Codes'); 
foreach($array["results"] as $ret) { 
    $nominalCodes[] = array('value' => $ret["name"], 'label' => $ret["display"].' ('.$ret["name"].')'); 
} 
$nominalCodesData = json_encode($nominalCodes); 
?> 

然後我試圖創建從選項中選擇元素PHP數組。

我希望能夠使用來自PHP數組中的數據(值=選擇選項/標籤選擇選項的=顯示的值)

我曾嘗試這樣的代碼:

//Create array of options to be added 
    var array = <?php echo $nominalCodesData; ?>; 

    //Create and append select list 
    var selectList = document.createElement("select"); 
    selectList.id = "mySelect"; 
    Cell0.appendChild(selectList); 

    //Create and append the options 
    for(var i = 0; i < array.length; i++) { 
     var obj = array[i]; 
     for(var key in obj) { 
      var option = document.createElement("option"); 
      option.value = obj[key]; 
      option.text = key; 
      selectList.appendChild(option); 
     } 
    } 

然而,這回在選擇元素的選項:

label 
value 
label 
value 
label 
value 
label 
value 
label 
value 
label 
value 
label 
value 
label 
value 
label 
value 
+1

什麼是PHP的輸出?當然值得編輯你的問題來包括它。 – enhzflep

+0

你可能給我們從你的PHP中得到'print_r($ nominalCodes)'或'echo $ nominalCodesData'的值嗎? –

回答

1

嘗試下面的JavaScript來代替:

//Create and append select list 
var selectList = document.createElement("select"); 
selectList.id = "mySelect"; 
Cell0.appendChild(selectList); 

//Create and append the options 
for(var i = 0; i < array.length; i++) { 
    var obj = array[i]; 
    var option = document.createElement("option"); 
    option.value = obj["value"]; 
    option.text = obj["label"]; 
    selectList.appendChild(option); 
} 
1

JSON索引成爲JavaScript中的屬性,因此,而不是obj[key],您必須編寫obj.key。接下來是代碼(用箭頭指出◄==):

<?php 
//create array of items for nominal code box 
$nominalCodes = array(); 
//$array = Statuses('Nominal Codes'); 
// SAMPLE DATA ▼ 
$nominalCodes[] = array('value' => "aaa", 'label' => "111" . ' (aaa)'); 
$nominalCodes[] = array('value' => "bbb", 'label' => "222" . ' (bbb)'); 
$nominalCodes[] = array('value' => "ccc", 'label' => "333" . ' (ccc)'); 
$nominalCodesData = json_encode($nominalCodes); 
?> 
<html> 
    <head> 
    </head> 
    <body> 
    <div id="my_div"> 
    </div> 
    <script type="text/javascript"> 
//Create array of options to be added 
    var array = <?php echo $nominalCodesData; ?>; 

    //Create and append select list 
    var selectList = document.createElement("select"); 
    selectList.id = "mySelect"; 
    document.getElementById("my_div").appendChild(selectList); 

    //Create and append the options 
    for(var i = 0; i < array.length; i++) { 
     var obj = array[i]; 
     //for(var key in obj) { 
      var option = document.createElement("option"); 
      option.value = obj.value;   //◄============================ 
      option.text = obj.label;   //◄============================ 
      selectList.appendChild(option); 
     //} 
    } 
    </script> 
    </body> 
</html> 

以前的代碼複製並粘貼在一個文件中,保存爲PHP並在瀏覽器中打開它。