php - 无法通过 getElementById 操作 AJAX 下拉列表

标签 php javascript mysql html ajax

我用它来拉下拉列表:

function showRecords(str,column,nextDiv) {
  if (str== null) {
    document.getElementById(nextDiv).innerHTML="----------------------------------------";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    var xmlhttp=new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","getRecords.php?"+column+"="+str,true);
  xmlhttp.send();
}

页面加载正常,但是,当您查看源信息时,没有来自 AJAX 的任何内容,因此我无法通过 getElementById 操作下拉列表的任何值,是这样吗正常吗?

<小时/>

澄清

实际的 ID 本身位于主页上,但所有选项都是从另一个页面导入的。我无法特别使用此代码:

<?php echo "document.getElementById('province').value =\"Abim\";";?> 

因为这些国家在这个页面上不存在,所以它们是导入的值,不仅如此,页面上唯一的就是这个...

<option value = >--------------------</option>
<option value="Abim">Abim</option>
<option value="Adjumani">Adjumani</option>
<option value="Amolatar">Amolatar</option>
<option value="Amuria">Amuria</option>
... etc

这里全部插入

<select name =province class=dropdown id=province></select>

凭借 id。

<小时/>

解决方案

通过 AJAX 函数传递另一个变量:oldVal ($_REQUESTed Value)

...
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
        ---------> document.getElementById(nextDiv).value = oldVal;
    }
}     

最佳答案

您无法使用province做任何有用的事情。元素,直到它被 AJAX 调用填充。您必须移动这段 JavaScript:

document.getElementById('country').value = "Uganda";

进入 AJAX 回调:

xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
        document.getElementById('country').value = "Uganda";
    }
};

或者类似的东西。您对 nnnnnn 的评论是关于国家/地区列表,但您更新的问题是关于省份列表,所以我不确定哪一个是您的问题;但是,我很确定根本的问题是您正在设置 <select> 的值在您填充 <select> 之前使用 AJAX 调用,解决方案是在使用 AJAX 调用中的 HTML 更新 DOM 后在 AJAX 回调中设置值。

关于php - 无法通过 getElementById 操作 AJAX 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5945072/

相关文章:

php - Laravel 删除查询 where is null

php - 没有 remember_token 的 Laravel 5 身份验证

javascript - 是否可以在validationSchema通过后进行更多的验证,是的,通过了吗?

javascript - 是否有更好的方法来避免这种多维数据中的重复?

javascript - chrome 扩展弹出 textarea 焦点

mysql - 执行 Mysql 查询,在某些位置屏蔽二进制字符串

php - 如何在phpMyAdmin中查看/更改数组的内容

php - 当链接可以是父链接或子链接时查询生成父名称

mysql - ID匹配时如何从另一个表中获取名称?

mysql - 如何检查函数或变量的输出是否为 NULL