根据AJAX响应更改下拉列表值

时间:2011-02-01 04:47:36

标签: php javascript mysql ajax

我对AJAX不是很精通,但从各方面来看,我觉得这应该有效。 它应该做的是用户从下拉列表中选择一个名称,另一个下拉列表(使用PHP从mysql数据库填充)自动选择关联的对象。所以,假设你有:

姓名:Susie / Michael / Karen

最喜欢的水果:苹果/橙/芒果/番石榴

通过选择Susie,它会自动选择“Orange”,因为这是她在数据库中最喜欢的水果。

我有这个代码用于Ajax将下拉列表更改为相关的“水果”。

 <script type="text/javascript">
function getAff(str)
{
if (str=="NULL" || str=="")
  {
  document.getElementById("fruit").value="";
  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)
    {
    alert(xmlhttp.responseText);

 var indexVal = document.getElementById("fruit").length;
  for(x=0; x<indexVal;x++) {
  if (document.getElementById("fruit").options[x].value == xmlhttp.responseText) {
   document.getElementById("fruit").selectedIndex = x;
   //alert(xmlhttp.responseText);
   }
  }
    }
  }
xmlhttp.open("GET","getaff.php?q="+str,true);
xmlhttp.send();
}
</script>

我已经通过警告确认它正在提取正确的值,尽管我已经在这里评论过了。

唯一的障碍是下拉框没有改变。我不知道是不是因为它是通过php生成的?但不应该这样。每个下拉列表选择的值是从数据库中提取的水果的名称。我还告诉自己索引值,看看它是否正在读取下拉列表,我得到了正确的数字。但没有改变下拉列表。有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

  

我不是很精通AJAX但是   从各方面来看,我认为这应该是   工作

如果你不熟悉javascript,我认为你不应该写简单的javascript(很难)。使用像jquery这样非常受欢迎的框架,让这些平凡的任务变得简单。

  

它应该做的是用户   从下拉列表中选择一个名称,然后   另一个下拉列表(填充来自   mysql数据库与PHP)自动   选择关联的对象。

您应该查看以下部分:

  • How Jquery works:让你入门。
  • s elect():将事件处理程序绑定到“select”JavaScript事件,或在元素上触发该事件。
  • .load ::从服务器加载数据并将返回的HTML放入匹配的元素中。

  • Jquery.get / jQuery.getJSON():使用HTTP GET请求从服务器加载数据/使用GET HTTP请求从服务器加载JSON编码的数据。

  • Jquery.post:使用HTTP POST请求从服务器加载数据。

当你阅读/浏览这些部分时,你应该能够毫不费力地写下这些内容(还有更多的感谢John Resig)。

答案 1 :(得分:0)

要尝试的一些事项:

  • 您是在比较价值还是innerHTML

  • 您是否完全确定价值(或innerHTML)符合您的回复?

答案 2 :(得分:0)

尝试在&lt;选项&gt;上设置所选值标记,而不是&lt; select&gt;,并从响应中修剪空格:

if (document.getElementById("fruit").options[x].value == xmlhttp.responseText.trim()) {
    document.getElementById("fruit").options[x].selected = "selected";
}
相关问题