AJAX не работает в Internet Explorer 9 - PullRequest
1 голос
/ 29 марта 2012

Это моя функция:

<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 он вообще не работает. У кого-нибудь есть идеи, почему?

ОБНОВЛЕНИЕ: мне тогда не удалось этого сделать. Так что я изменил логику работы тотально. Спасибо всем за ответы.

Ответы [ 4 ]

0 голосов
/ 23 ноября 2015

Слишком поздно, чтобы ответить, но вот решение, которое должно решить эту проблему.

У меня была похожая проблема на этой неделе.Измените

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

0 голосов
/ 29 марта 2012

Проверьте, как ваш запрос отправляется на сервер.Как выглядят двойные кавычки?IE9, по крайней мере с jQuery, не правильно кодирует двойные кавычки в соответствии с этим постом: Почему этот вызов jQuery Ajax терпит неудачу ТОЛЬКО в IE9 (даже отлично работает в IE8 и IE7)

0 голосов
/ 29 июня 2014

Я знаю, что это очень старый вопрос, но все же, на самом деле нет правильного ответа ....

Правильный порядок операций:

  1. Создайте объект запроса
  2. open соединение
  3. Set onreadystatechange listener
  4. send запрос

У вас есть шаги 2 и 3 в неправильном порядке, что вызывает проблемы в некоторых браузерах.

0 голосов
/ 29 марта 2012

Может быть, это проблема с кешем.Параметр test установлен как значение метки времени, например:

xmlhttp.open("GET","gradovi.php?selected="+x.value+"&t="+parseInt(new Date().getTime().toString().substring(0, 10)),true);
xmlhttp.send();

С уважением!

...