我有一个页面使用ajax帖子并发回消息
if( $_GET['foo'] == FALSE ){
die("u must tick foo");
}
//if $_GET['foo'] pass
die("<script>location.reload();</script>");
我的问题是 当用户第一次发布时,如果用户没有单击按钮,则foo为FALSE ,脚本死亡和输出消息
但是,如果用户勾选按钮并再次发布,则页面确实通过if()
并执行location.reload
但不知何故,它仍会在location.reload
答案 0 :(得分:0)
您需要使用isset
来检查是否定义了GET
if( isset($_GET['foo']) && $_GET['foo'] == FALSE ){
die("u must tick foo");
}
//if $_GET['foo'] pass
die("<script>location.reload();</script>");
答案 1 :(得分:0)
也许你应该使用&#39; ===&#39;而不是&#39; ==&#39; for if()。 并且&#39; if else else&#39;可能是个不错的选择。
答案 2 :(得分:0)
我认为浏览器正在缓存您的请求。为了防止这种情况,您必须通过在php脚本的顶部发送这些标头来禁用浏览器缓存:
header("Cache-Control: no-cache,max-age=0");
header("Pragma: no-cache");
注意:在测试之前清除浏览器缓存
答案 3 :(得分:0)
尝试在请求中添加一些时间戳以避免缓存。
假设您发送了"http://www.example.com/index.php?foo=false"
之类的内容,可以尝试使用"http://www.example.com/index.php?foo=false&_="+(new Date())
无论如何,请注意,如果您未发送FALSE
或"0"
,则无法与""
进行比较。 "false"
字符串在PHP中为true
。