AJAX запрос в Internet Explorer срабатывает через раз
Здравствуйте,
JS.js $('#object').live('change', function (){ var realty = $('#realty').val(); var object = $('#object option:selected').text(); $.ajax({ async: false, url:"/ajax/ajax.php", type: "POST", data: ({object:object}), success: function(data) { if (data == '') {$('#information_object').html();} else {$('#information_object').html(data);} } }); }); ajax.php <?php header("Content-type: text/html; charset=utf-8"); include_once("../database.php"); if (!empty($_POST['realty'])) { $result = mysql_query ("SELECT id, value FROM object WHERE id_realty = ".mysql_real_escape_string($_POST['realty']).""); while ($myrow = mysql_fetch_assoc($result)) {echo "<option id='".$myrow['id']."' value='".$myrow['id']."'>".$myrow['value']."</option>\n";} } ?> В Jquery полный профан. Но тем не менее в ФФ, ХРОМ, ОПЕРА все летает и работает так как мне нужно. Но дело обстоит иначе с IE (8,9) запрос срабатывает, НО, через раз. При событии change по селекту браузер блокируется секунд на 5 ... но запрос не возвращает никаких данных.... со второго или третьего раза запрос срабатывает, но на 4 , 5 опять не срабатывает. Толи сервер не успевает обработать запрос, то ли браузер... прошу помочь. Заранее спасибо. |
1) в порядке эксперимента включите асинхронные запросы
для этого заремарте async: false, или замените на async: true посмотрим что изменится. 2)вы уверены что change срабатывает каждый раз ? если нет, то вставьте alert('hello'); в функцию и посмотрите всегда ли он появляется. о результатах отпишитесь. |
Цитата:
Включил/выключил async, нет результата. Сообщение alert отрабатывает каждый раз проверил 100 раз, отработал 100 из 100 |
nikolayseo,
1) Сначала уберите async: false - из-за этого браузер подвисает на несколько секунд. 2) Что у вас возвращает сервер ? (какие данные) вставьте alert(data) в success функцию. 3) добавьте колбэк для ошибки: error: function (jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown);} |
Цитата:
2. Сервер должен возвращать html код вида: <option id="1" value="1">...</option> <option id="2" value="2">...</option> <option id="3" value="3">...</option> alert(data) срабатывает в IE раз 5 из 10, в остальных случаях срабатывает калбек функция error c ошибками вида: 12152 error или ErrorInternal Server Error. У хостера порядок вроде сказал. В логах сервера ошибки вида: (70007)The timeout specified has expired: mod_fcgid: can't get data from http client, referer: |
nikolayseo,
У вас серверная ошибка. Копать нужно в эту сторону. Логируйте на сервере данные перед отправкой и смотрите что вы получаете на клиенте. Полностью выводите ошибку, это может помочь: error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR.toString() + ' ' + textStatus + ' ' + errorThrown); } |
Часовой пояс GMT +3, время: 03:19. |