即使用户单击“返回”,也将PHP变量传递给javascript

时间:2018-09-25 12:52:58

标签: javascript php jquery ajax

让我们从一个典型的PHP / html / JavaScript环境开始。跳过<head><body>,假设我们有:

<script>
    var foo = <?php echo generateFoo(); ?>;
</script>

让我们假设这在所有方面都可以正常工作,除了一个小缺陷。也就是说,每当我离开页面并单击“返回”时,都会得到foo的旧值,而不是更新的值。

我了解此错误。单击“后退”将从缓存而不是服务器中加载页面,因此它将返回到PHP的先前值,而不是当前值。但是,我希望它强制更新。 (这尤其重要,因为用户可能会在另一页上更改值,并且不是html专家的人会期望“返回”将您带到上一页的更新版本。代码总是更容易更改而不是用户的行为。)

我该写些什么,使其功能与上面的代码完全相同,但在用户向后导航时也将执行?

(我认为正确的解决方案可能使用AJAX,但也许我错了。该页面已经使用了jquery CDN中的AJAX,所以如果可以的话,我也可以使用它。)

编辑:

一种允许缓存但仅更新一个变量将是理想的解决方案。但是,如果停止缓存是唯一的解决方案,我什至不知道该怎么做。所以告诉我该怎么做会很好。

直接从我的代码复制而无需更改:

<?php

...

    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0 ");
?>

是的,我已经尝试停止缓存。它在BFCache中不起作用。

1 个答案:

答案 0 :(得分:3)

Check out this thread和代码示例:

    @IBAction func onSignUp(_ sender: Any) {

        guard let usernameText = usernameField.text, let passwordText = passwordField.text else {return}
        let newUser = PFUser()
        newUser.username = usernameText
        newUser.password = passwordText
        newUser.signUpInBackground { (success: Bool, error: Error?) in
            if success {
                print("Created User")
            } else {
                print(error!.localizedDescription)
            }
        }
    }