PHP ajax帖子仍打印出上一条消息

时间:2016-05-12 13:07:05

标签: javascript php jquery ajax class

我有一个页面使用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

之前打印出“你必须打勾......”的消息 顺便提一下它的类公共函数内部

4 个答案:

答案 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