Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2012, 10:41
Интересующийся
Отправить личное сообщение для nikolayseo Посмотреть профиль Найти все сообщения от nikolayseo
 
Регистрация: 06.03.2011
Сообщений: 20

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 опять не срабатывает. Толи сервер не успевает обработать запрос, то ли браузер...


прошу помочь. Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2012, 11:04
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

1) в порядке эксперимента включите асинхронные запросы
для этого заремарте async: false, или замените на async: true
посмотрим что изменится.

2)вы уверены что change срабатывает каждый раз ?
если нет, то вставьте alert('hello'); в функцию и посмотрите всегда ли он появляется.

о результатах отпишитесь.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 12.11.2012 в 11:09.
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2012, 11:58
Интересующийся
Отправить личное сообщение для nikolayseo Посмотреть профиль Найти все сообщения от nikolayseo
 
Регистрация: 06.03.2011
Сообщений: 20

Сообщение от DjDiablo Посмотреть сообщение
1) в порядке эксперимента включите асинхронные запросы
для этого заремарте async: false, или замените на async: true
посмотрим что изменится.

2)вы уверены что change срабатывает каждый раз ?
если нет, то вставьте alert('hello'); в функцию и посмотрите всегда ли он появляется.

о результатах отпишитесь.

Включил/выключил async, нет результата.

Сообщение alert отрабатывает каждый раз проверил 100 раз, отработал 100 из 100

Последний раз редактировалось nikolayseo, 12.11.2012 в 19:35.
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2012, 21:40
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

nikolayseo,

1) Сначала уберите async: false - из-за этого браузер подвисает на несколько секунд.
2) Что у вас возвращает сервер ? (какие данные)
вставьте alert(data) в success функцию.
3) добавьте колбэк для ошибки:
error: function (jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown);}

Последний раз редактировалось Hoshinokoe, 12.11.2012 в 21:42.
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2012, 22:42
Интересующийся
Отправить личное сообщение для nikolayseo Посмотреть профиль Найти все сообщения от nikolayseo
 
Регистрация: 06.03.2011
Сообщений: 20

Сообщение от Hoshinokoe Посмотреть сообщение
nikolayseo,

1) Сначала уберите async: false - из-за этого браузер подвисает на несколько секунд.
2) Что у вас возвращает сервер ? (какие данные)
вставьте alert(data) в success функцию.
3) добавьте колбэк для ошибки:
error: function (jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown);}
1. Убрал async: false - подвисания исчезли, проблема осталась.

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:
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2012, 23:13
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

nikolayseo,

У вас серверная ошибка. Копать нужно в эту сторону. Логируйте на сервере данные перед отправкой и смотрите что вы получаете на клиенте.

Полностью выводите ошибку, это может помочь:
error: function (jqXHR, textStatus, errorThrown) { 
   alert(jqXHR.toString() + ' ' + textStatus +  ' ' + errorThrown);
}

Последний раз редактировалось Hoshinokoe, 12.11.2012 в 23:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
This web site only supports Internet Explorer 6.0 and Internet Explorer 7.0. monolithed Оффтопик 1 22.07.2011 17:54
Ajax запрос. Возврат массива. Rinas jQuery 5 09.04.2011 18:58
Не отрабатывает opener.location.reload() для Internet Explorer nickstarnew Events/DOM/Window 0 06.03.2009 13:20
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
Панель информации обозревателя Internet Explorer Гость Internet Explorer 1 26.07.2008 16:12