Wtf IE7 - AJAX-вызовы с использованием setTimeout - PullRequest
0 голосов
/ 27 февраля 2009

Я проверил это на Firefox, Opera и Seamonkey. Работает нормально. Когда дело доходит до Internet Explorer 7. Это работает, но до определенного момента. Я делаю AJAX-вызов PHP-скрипта каждые несколько секунд. В IE7 он делает первый вызов AJAX и извлекает данные, но больше никогда не делает этого. Хотя у меня есть функция setTimeout в блоке else. ПОЧЕМУ? : (

startTime = setTimeout('getStatus()', 5000); 

}//function convertNow

функция getStatus () {

    $.ajax({
    type: "GET",
    url: "fileReader.php",
    data: 'textFile=' + fileNameTxt,
    success: function(respomse){
    textFileResponse = respomse.split(" ");
    $("#done").html("Downloading & Converting Video...<b style='font-size:17px;color:green;'>" + textFileResponse[0] + "</b><br /><b>" + properFileName + '</b>');
    }
    });//ajax

    if(textFileResponse[0]=='100.0%'){

    }
    else{       
    continueTime = setTimeout('getStatus();', 3000); 
        alert('call end');
    }

}

Извините, если из-за этого вопроса возникает какое-либо разочарование Последние 3 часа я бегала, как курица без головы.

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ 2

Я добавил полную функцию. SetTimeout, кажется, работает правильно. Это должен быть вызов AJAX, я просто проверяю, что возвращается. Даже незнакомец! Он продолжает возвращать одно и то же значение из запроса AJAX и не получает никаких новых значений !! Я думаю, что у Ответа 2 может быть что-то. Это может быть связано с кешем, но как вы к этому пришли?

Ответы [ 4 ]

4 голосов
/ 27 февраля 2009

Вы запрашиваете ajax-вызов через HTTP GET, а не HTTP POST? IE имеет тенденцию использовать кэшированные результаты вызовов ajax, если вы не используете POST вместо GET.

РЕДАКТИРОВАТЬ: Поскольку вы обновили свой вопрос, я вижу, что вы действительно используете глагол GET. Измените его на POST, и я уверен, что ваша проблема будет решена.

1 голос
/ 09 сентября 2011

Вы все еще можете использовать запрос GET и просто добавить

cache: false

на запрос $ .ajax.

1 голос
/ 27 февраля 2009

Не совсем уверен в этом, но вам не хватает ;?

от

setTimeout('getStatus()', 3000); 

до:

setTimeout('getStatus();', 3000); 
0 голосов
/ 27 февраля 2009

Я заметил, что textFileResponse установлен в объявлении функции обработчика успеха для вызова AJAX, но после вызова AJAX ссылается на массив. Возможно, в IE 7 обработчик успеха не был завершен до ссылки на массив, что приводило бы к ошибке Java-скрипта, поэтому setTimeout никогда не запускался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...