2016-08-02 78 views
0

我的代碼有兩個步驟。首先用戶填寫一些字段,然後數據由ajax提交給服務器。 Ajax返回一個HTML選擇輸入,用戶必須選擇一個值。這是第二步。在AJAX響應中無法獲得HTML選擇的值

問題是,當我嘗試在javascript中獲取select的值時,它顯示爲null。

我用來獲取選擇值的代碼在正常情況下工作。但是,當通過ajax檢索select時,會發生此問題。

代碼來獲得選擇值

var e = document.getElementById("ordernum"); 
var num = e.options[e.selectedIndex].value; 
+2

用ajax發佈完整的代碼,你是如何將它附加到dom的 –

+0

'問題是,當我嘗試在javascript中獲得select的值時,它顯示爲null.' < - 這導致我相信你正在試圖在實際編譯之前訪問這個值(這是asyncronou S)。請填寫完整的代碼 – briosheje

+0

夥計們,ajax沒有問題。它會返回一些包含select的HTML代碼,因爲它應該是。返回的HTML將被放入具有innerHTML函數的某個div中(這裏是select出現的時候)。整個代碼很複雜,但如果你認爲它可以幫助,我會發布它。 –

回答

0

這裏是展示如何動態地生成一個select元素,並通過event.target.value從中獲得價值重新站了onchange事件爲例HTML文件:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <script> 
      const GameDifficulty = { 
       EASY:1, 
       MEDIUM:2, 
       HARD:3, 
       INSANE:4 
      }; 

      function init(event) { 
       console.log(event); 
       var body = document.getElementById('body'); 
       var select = document.createElement('select'); 
       select.id = 'selDifficulty'; 
       for (var diff in GameDifficulty) { 
        var option = document.createElement('option'); 
        option.value = GameDifficulty[diff]; 
        option.innerHTML = diff; 
        select.appendChild(option); 
       } 

       select.onchange = test; 

       body.appendChild(select); 
       console.log(body); 
      } 

      function test(event) { 
       console.log(event.target.value); 
      } 

      window.onload = init; 
     </script> 
    </head> 
    <body id="body"> 
    </body> 
</html> 
+0

我編輯了代碼。沒有工作。我在post中寫的代碼是我經常用來在JS中獲得選擇值的代碼。除了這個時間以外,它一直都是有效的。 –

+0

您可以使用該代碼獲取單個選項,但是,這不是訪問表單提交的選擇值的正確方法。您需要從選擇本身而不是選項值中獲取值。 – ManoDestra

+0

我不想在第二步中提交表單。我只想獲得用戶選擇的值。 –