Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ajax иногда ловится ответ, иногда нет
 
 автор: SHAman   (29.10.2007 в 13:58)   письмо автору
 
 

Дело такое: отправляю ajax-запрос, ловлю ответ. Заголовки, все как положено. Только вот проблема: на локалхосте все работает идеально. А в инете - через раз. Иногда работает как надо, а иногда выводит response прямо в браузер:( Что не так делаю?

upd: Похоже, что иногда не догружается JS. Вопрос: почему так? Как сделать так, чтобы 100% все внешние JS догружались? Потому что иногда получается, что идет загрузка, потом браузер не загружает какой-то внешний JS, а потом, естественно, отправляет форму не аяксом, а субмитом. Вот и получается такой эффект...

   
 
 автор: coloboc66   (29.10.2007 в 14:28)   письмо автору
 
   для: SHAman   (29.10.2007 в 13:58)
 

А вы отслеживаете ответы сервера? Примерно вот так должно быть:.

req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) { 
             req.onreadystatechange = verify;
            req.open("POST", url, true);
            req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
            req.send(data);
                } 
function verify()
{
if (req.readyState == 4)
  { 
    if (req.status == 200)  processReqChange();
  }
}
function processReqChange()
{
здесь получаем данные с сервера
}

   
 
 автор: SHAman   (29.10.2007 в 14:35)   письмо автору
 
   для: coloboc66   (29.10.2007 в 14:28)
 

Я использую jquery.

<script language="javascript" rel="javascript" type="text/javascript">
var aj_load = $('<img src="./img/loading.gif"/>');
var res_line = $('#line_result');
$('#line_form')[0].onsubmit = function()    {
    aj_load.appendTo(res_line);
    $('#line_form').ajaxSubmit({
        type: 'POST',        
        success: function(aj)
            {
            res_line.empty();
            res_line.html(aj);
            setTimeout("res_line.empty();", 3000);
            },
        resetForm: true
        });
    return false;
}
</script>


На локалхосте работает отлично. На сервере - через раз.

   
 
 автор: coloboc66   (29.10.2007 в 14:39)   письмо автору
 
   для: SHAman   (29.10.2007 в 14:35)
 

Я делаю так, как показал выше. У меня всё работает чётко. Только для Оперы и Лисы в этом примере недописал...
Вот это допишите для отлавливания ошибки:
function verify()
{
if (req.readyState == 4)
{
if (req.status == 200) processReqChange();
}
else alert("Не удалось получить данные:\n"+req.statusText +' '+req.status+my_ajax.url);}
}

   
 
 автор: SHAman   (29.10.2007 в 14:38)   письмо автору
 
   для: coloboc66   (29.10.2007 в 14:28)
 

Да, я знаю что должно быть. Говорю же: на локалхосте работает. Блин, какой-то странный заглюк. Не могу понять почему иногда работает, а иногда - нет. Ничего не меняю. Зайдешь на страничку - работает, перезагрузишь - не работает. Вернешься - работает и т.д.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования