这是我的功能:
<script type="text/javascript">
function loadXMLDoc() {
var x = document.getElementById("trazi_drzava");
var xmlhttp;
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("trazi_grad").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gradovi.php?selected=" + x.value, true);
xmlhttp.send();
}
</script>
我称之为:
<select name="td" id="trazi_drzava" onchange="loadXMLDoc()">
<option value="">Država</option>
<?php
$sel_grad_arr=array();
$sel_grad_arr[]="<select name='tg' id='grad0'>
<option value=''>Grad</option</select>";
if($q=mysql_query("SELECT drzava_id,drzava FROM drzava")){
while($r=mysql_fetch_assoc($q)){
echo '<option value="'.$r['drzava_id'].'">'.$r['drzava'].'</option>';
}
}else echo mysql_error().__LINE__;
?>
</select><select name="tg" id="trazi_grad">
//code that ajax should load
</select>
它适用于大多数浏览器,但使用Internet Explorer 9它根本不起作用。任何人都知道为什么?
更新:我当时没有设法做到这一点。所以我改变了工作的逻辑。谢谢大家的回答。
答案 0 :(得分:0)
可能是缓存问题。参数测试设置为时间戳值,如:
xmlhttp.open("GET","gradovi.php?selected="+x.value+"&t="+parseInt(new Date().getTime().toString().substring(0, 10)),true);
xmlhttp.send();
问候!
答案 1 :(得分:0)
检查您的请求如何发送到服务器。双引号是什么样的? IE9,至少使用jQuery,根据这篇文章没有正确编码双引号: Why does this jQuery Ajax call fail ONLY in IE9 (Even works fine in IE8 and IE7)
答案 2 :(得分:0)
我知道这是一个非常古老的问题,但仍然是一个没有实际正确答案的问题....
正确的操作顺序是:
open
连接onreadystatechange
侦听器send
请求您的步骤2和3的顺序错误,导致某些浏览器出现问题。