2012-10-05 31 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