[英]AJAX not working in Internet Explorer 9
這是我的功能:
<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則根本不起作用。 有人知道為什么嗎?
更新:那時候我沒有做到這一點。 所以我改變了整體工作的邏輯。 謝謝大家的回答。
我知道這是一個非常老的問題,但是仍然沒有一個正確答案。
正確的操作順序是:
open
連接 onreadystatechange
偵聽器 send
請求 步驟2和3的順序錯誤,這會導致某些瀏覽器出現問題。
現在回答還為時已晚,但這是應該解決此問題的解決方案。
這個星期我也有類似的問題。 改變
xmlhttp.open("GET", "gradovi.php?selected=" + x.value, true);
至
xmlhttp.open("POST", "gradovi.php?selected=" + x.value, true);
這解決了我的問題。 檢查此處: 此PHP腳本在Internet Explorer和Microsoft Edge中不起作用,但在Chrome / Firefox / Safari / Opera中起作用
也許是緩存問題。 參數測試設置為時間戳值,類似於:
xmlhttp.open("GET","gradovi.php?selected="+x.value+"&t="+parseInt(new Date().getTime().toString().substring(0, 10)),true);
xmlhttp.send();
問候!
檢查您的請求如何發送到服務器。 雙引號是什么樣子? IE9(至少使用jQuery)不會根據此文章正確編碼雙引號: 為什么此jQuery Ajax調用僅在IE9中失敗(即使在IE8和IE7中也可以正常工作)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.