【问题标题】:How can I capture php session variables in javascript without page refresh?如何在不刷新页面的情况下在 javascript 中捕获 php 会话变量?
【发布时间】:2013-10-07 19:05:05
【问题描述】:

我有一个index.php,在那里我做session_start() 等。为了登录,我向receiver.php 发送一个ajax 请求,在那里我设置会话变量等并得到一个ajax 响应。

现在,我可以完美地捕获 php 会话变量只有当我刷新具有以下代码的 index.php 页面时:

jsSessionUserId = <?php     
    if (isset($_SESSION['userId'])) { //LoggedIn:
        echo json_encode($_SESSION['userId']); 
    } else { //  Not logged in.
        // some code here
    }
?>;

我真正想要的是把它放在一个函数中,然后当我收到一个成功的 ajax 响应时调用这个函数(因此不需要刷新index.php 页面)。它不工作。我怀疑 php 在 javascript 函数中无法正常工作。感谢您的帮助。

【问题讨论】:

    标签: javascript php ajax session


    【解决方案1】:

    把事情搞混是个坏主意。像 php 和 javascript。现在最简单的解决方案 - 收到成功的登录响应后覆盖您的 javascript 变量。

    $.post("receiver.php", formData, function(response){ // login callback
      if(response.UserId){ // return user id if login is successful
        jsSessionUserId = response.UserId; // overwrite old variable
      }
    }, "json");
    

    【讨论】:

    • 谢谢。我尝试了你的概念,我不再需要混合 php 和 javascript。 ajax 调用是在单击按钮/图像时完成的(不涉及表单),然后在返回时更新 jsSessionUserId。而且我避免使用像 jsSessionUserId 这样的全局变量使用闭包(Crockford - 好东西)。目前这对我来说已经足够好,但如果有更好的方法,请不吝赐教。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多