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, время: 15:43. |