ie的If语句和$.ajax

Internet Explorer If statement and $.get ajax

本文关键字:ajax 语句 If ie      更新时间:2023-09-26

我有一些代码,在chrome完美的工作,但它在IE出错。if条件在chrome中完美地工作,但似乎在IE中,无论resData的值如何,第一个条件总是执行。我wireshark响应,数据包包含'started',但它仍然在第一个if条件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);
        }
    }
});
编辑:

我用" == "改变了所有的if条件。

经过更多的调试,它并不总是执行第一个if条件,ajax函数似乎是问题所在。它在加载页面后第一次执行时获取正确的数据值,但任何其他GET都会给我第一个值,即使在wireshark中它显示正确的更新值。

不要使用"= = =",用"= ="。字符串OBJECT和字符串LITERAL是有类型区别的。在这种情况下,您只关心值的等价性,而不关心(值+类型)的等价性。

听起来像是臭名昭著的IE-AJAX缓存问题。这里有一些信息http://ajaxian.com/archives/ajax-ie-caching-issue但谷歌可能会提供给你更多。IE缓存响应,所以我猜这就是为什么你会一次又一次地得到第一个响应。我有点困惑,因为您在Wireshark中看到正在发出请求,但尝试将URL设置为'/getOutputBuffer?r=' + new Date().getTime(),看看会发生什么。