AJAX PHP+MySQL - 选择框

Posted

技术标签:

【中文标题】AJAX PHP+MySQL - 选择框【英文标题】:AJAX PHP+MySQL - Selectbox 【发布时间】:2014-07-18 22:20:30 【问题描述】:

所以我有这个简单的 AJAX 示例要修改,所以当我在选择框中更改年份时,我希望它对多个 div 生效,而不仅仅是具有 ID 的那个。有什么解决办法吗?我在想 getelementsbyclassname,但它没有显示任何内容。

<html>
<head>
<script>
function showUser(str) 
  if (str=="") 
    document.getElementById("txtHint").innerHTML="";
    return;
   
  if (window.XMLHttpRequest) 
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
   else  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  
  xmlhttp.onreadystatechange=function() 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    
  
  xmlhttp.open("GET","proba.php?q="+str,true);
  xmlhttp.send();

</script>
</head>
<body>

<form>    
    <select name="users" onChange="showUser(this.value)">
      <option value="">Choose year:</option>
      <option value="2013">2013</option>
      <option value="2014">2014</option>    
    </select>
</form>
<br>

<div id="txtHint"><b> - </b></div>

<p>&nbsp;</p>
</body>
</html>

【问题讨论】:

【参考方案1】:

getElementsByClassName 可以正常工作,您只需要迭代返回的项目:

<html>
<head>
<script>
function showUser(str) 
  if (str=="") 
    setContent("");
    return;
   
  if (window.XMLHttpRequest) 
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
   else  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  
  xmlhttp.onreadystatechange=function() 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 

      setContent(xmlhttp.responseText);

    
  
  xmlhttp.open("GET","proba.php?q="+str,true);
  xmlhttp.send();


function setContent(content)
    var divs = document.getElementsByClassName('txtHint');  //fixed syntax error here
    var i = divs.length;

    while(i--) 
          divs[i].innerHTML = content;
    

</script>
</head>
<body>

<form>    
    <select name="users" onChange="showUser(this.value)">
      <option value="">Choose year:</option>
      <option value="2013">2013</option>
      <option value="2014">2014</option>    
    </select>
</form>
<br>

<div class="txtHint"><b> - </b></div>
<div class="txtHint"><b> - </b></div>
<div class="txtHint"><b> - </b></div>

<p>&nbsp;</p>
</body>
</html>

【讨论】:

什么都没有是什么意思?尝试添加 console.log(xmlhttp);在您的 onreadystatechange 函数顶部并使用结果更新您的答案 我的意思是,复制+粘贴您的解决方案,它不会显示任何内容。 @VaimanHunor 好的,有一个很小的语法错误,我使用了逗号而不是分号。现在已修复

以上是关于AJAX PHP+MySQL - 选择框的主要内容,如果未能解决你的问题,请参考以下文章

如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?

动态依赖选择框(PHP+JQuery+AJAX)

通过 Ajax PHP 动态加载下拉选择

使用 JQUERY、AJAX 和 PHP 填充选择框

PHP MySQL & AJAX 搜索过滤器时间延迟

使用ajax从mysql DB检索和打印数据到文本框(如何在同一个php页面中使用它两次)