2012-10-05 26 views
0

亙古不返回通過AJAX填充選項的選擇對象的選擇對象的JavaScript不列入返回通過AJAX填充選項中的JavaScript

下面我對現有的HTML表,其中HTML表有添加HTML DOM行三列一個帶有名稱和另一個與選擇框和最後一個具有按鈕動態地通過Ajax

從而創建行的功能,以節省與名稱的選項是

function createTable(row){ 
    var table = document.getElementById("table"); 
    var row = table.insertRow(row); 
    var cell1 = row.insertCell(0); 
    cell1.innerHTML = "something"; 
    var cell2 = row.insertCell(1); 
    cell6.appendChild(createSelctbox()); 
    ... 
.. 
} 

和AJAX調用創建選擇對象,其選擇是

function createSelctbox(){ 
var selec = document.createElement("select"); 
var xmlhttp = getXMLObject(); 
if(xmlhttp) 
{ 
    xmlhttp.open("POST","some.php",true); 
    xmlhttp.onreadystatechange = function() 
    { 
    if (xmlhttp.readyState == 4) 
    { 
     if(xmlhttp.status == 200) 
     { 

     var data = JSON.parse(xmlhttp.responseText); 

     var option; 
     for(var i=0;i<data.length;i++){ 
      option = document.createElement('option'); 
      option.value=data[i].id; 
      option.appendChild(document.createTextNode(""+data[i].something+"")); 
      selec.appendChild(option); 
     } 
     return selec; 
     } 
    } 
    } 
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send("display="+type);    

} 

因此,這是可能返回這樣

回答

1
We unable to add <option>xx</option> parts in select box dynamically. 
Instead you can try to create full select box. 

即,

<select> 
    <option>1</option> 
    <option>2</option> 
</select> 

if you want to add <option>3</option>, then you should make new select box with newly added item. 

歡呼。

+0

我已經試過這也不過表腳本不等待直到ajax返回選擇框dom – senK

1

我高度懷疑,問題是與async選項

你可以通過改變這一行

xmlhttp.open("POST","some.php",true); 

嘗試

xmlhttp.open("POST","some.php",false); 
+0

沒有它的不工作。正常的JavaScript DOM完美返回,但是當它涉及到Ajax它沒有返回...如果我們嘗試提醒返回它說undefined – senK

+0

@ user1711126你用'false'嘗試過嗎?是的,這是所期望的,因爲當你調用該方法時沒有這樣的元素,所以使它同步。 –

+0

是通過轉換爲false更改爲同步的,但也不起作用。所以我只是加載選項加載和訪問使用onclick事件.. – senK