2011-06-27 66 views
0

我有一个JavaScript函数执行在页面加载,这是这样的:IE:网页需要被刷新两次

if (isTrue()) { 
    $.post("check.php", { value: 'true' }); 
} else { 
    $.post("check.php", { value: 'false' }); 
} 

check.php看起来是这样的:

if ($_POST['value'] == 'true') { 
    $_SESSION['value'] = true; 
} else { 
    $_SESSION['value'] = false; 
} 

我的问题如果函数isTrue()更改为返回false,并且我转到IE,则需要刷新页面两次以查看它已更改。如果我再次将它设置为true,同样的事情,当我第一次刷新时,更改不存在,当再次刷新时,现在它们是。

这件奇怪的事情可能是什么原因造成的?

感谢您的任何意见!

+0

你能告诉我们isTrue函数吗?我怀疑它并不总是返回你期待的值 –

+0

听起来像是一个缓存问题。 – Tomalak

+0

这只是一个虚拟功能。我只是追踪了JavaScript,而且JavaScript完美地工作。这是因为$ _SESSION,有时$ _SESSION ['value']是在内容加载后设置的,这就是为什么然后在第二次刷新时就没问题了。 – luqita

回答

1

这是因为$ _SESSION,$ _SESSION ['value']已设置,但在刷新之后才看到该结果,因为页面已使用旧值加载。

0

也许某种缓存问题? 尝试在更改后清除浏览器缓存,并查看是否仍需要第二次刷新。

0

这可能是jQuery AJAX缓存的结果。我自己也有类似的问题。

尝试用此将其关闭:

$.ajax({ 
    type: "POST", 
    url: "check.php", 
    data: { value: 'true' }, 
    cache: false 
}); 

也可以尝试摆弄的请求,以检查是否他们实际上正在作出或不确认这是一个缓存的问题。