Заявление Internet Explorer If и $ .get ajax - PullRequest
0 голосов
/ 03 января 2012

У меня есть некоторый код, который отлично работает в Chrome, но в IE он работает неправильно. Условие if отлично работает в chrome, но, похоже, в IE первое условие всегда выполняется независимо от значения resData. Я заштриховал ответ, и пакет содержит «запущен», но он по-прежнему переходит в первое условие if (resData === 'not runnin').

$.get('/getOutputBuffer', function(resData){
    if(resData === 'not running'){
        $('#output').append('Executable not started<br>');
    }
    else{
        $('#output').append('Executable started (Now listening)<br>');
        if(resData !== 'no updates'){
            $('#output').append('status is ' +resData);
        }
    }
});

Edit:

Я изменил все условия if с помощью "==".

После дополнительной отладки не всегда выполняется первое условие if, похоже, проблема в функции ajax. Он получает правильное значение данных при первом запуске после загрузки страницы, но любой другой GET выдаст мне первое значение, даже если в wireshark он отобразит правильное обновленное значение.

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Не используйте "===", просто используйте "==".Существует разница в типе между строкой OBJECT и строкой LITERAL.В этом случае вас интересует только эквивалентность значений, а не эквивалентность (значение + тип).

1 голос
/ 04 января 2012

Похоже на печально известную проблему кеширования IE-AJAX. Вот некоторая информация http://ajaxian.com/archives/ajax-ie-caching-issue, но Google, вероятно, предоставит вам еще немного. IE кэширует ответы, поэтому я думаю, именно поэтому вы получаете первый ответ снова и снова. Я немного сбит с толку, потому что вы видите в Wireshark, что запросы выполняются, но попробуйте установить URL-адрес, например, '/getOutputBuffer?r=' + new Date().getTime() и посмотрите, что произойдет.

...