Ajax填充下拉列表无法在IE中运行

时间:2012-07-11 02:34:30

标签: php javascript ajax cross-browser

过去几天我一直在努力学习一些代码,但我没有取得任何进展。我需要帮助。这是我想要做的:

  • 手动填充两个下拉列表中的第一个
  • 抓取第一个选定的值,用它来查询数据库,填充第二个 下拉查询结果。
  • 使用按钮触发另一个功能以生成PDF。

我在我的网站上有这个代码,并且正在工作。问题是,它只适用于FF和Chrome。我无法在IE中填充下拉列表。为了进行测试,我已经将代码剥离到几乎没有什么只是为了看IE是否会填充第二个下拉列表,而它没有。以下是测试页面的代码:

TEST.HTM:

<html><head>
<script type="text/javascript">
function showCMB2(str)
{
if (str=="")
{
  document.getElementById("cmb2").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("cmb2").innerHTML=xmlhttp.responseText;
  }
}

xmlhttp.open("GET","test.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select name="cmb1" id="cmb1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<br />

<input type="button" value="Retrieve Data"   
 OnClick="showCMB2(cmb1.options[cmb1.selectedIndex].value)"> 
<br><br><br>
<span name="cmb2" id="cmb2"></span>
</body>
</html> 

test.php的:

<?php
echo '<select name="cmb2" id="cmb2">';
echo '<option value="cmb2">This is test</option>';
echo '</select>';
?> 

就像我说的,这在FF和Chrome中效果很好,但在IE中却不行。 test.htm中的id为cmb2的范围我试过制作它甚至是a,行为没有变化。有人可以提供任何见解吗?这看起来很简单。

2 个答案:

答案 0 :(得分:0)

您对服务器的响应是尝试添加一个与您分配给span元素的ID相同的元素 - ID必须是唯一的..

答案 1 :(得分:0)

设置innerHTML在IE8中无法正常工作。而是使用jquery函数$('#elementId')。html('....');

请注意,您必须具有value =属性,或者当IE将选项值传递给另一个javascript函数时,它将传递null。