【问题标题】:Session Variables Are Empty After JQuery RedirectJQuery 重定向后会话变量为空
【发布时间】:2017-03-31 01:23:55
【问题描述】:
  1. 我有一个使用 JQuery 验证然后提交给自己的表单 (A页)随意使用JQuery。 PHP 检测到提交 脚本。 (这很好用)
  2. 提交后 JQuery 脚本重定向到另一个页面(页面 B)。
  3. 另一个页面使用存储在会话变量中的值 从数据库中检索数据的上一页。

一切都很好,问题是重定向时会话变量为空!我尝试了各种不同的东西,但没有用。我不确定我做错了什么导致会话被清空。我怀疑问题出在重定向到页面 B 的 JQuery 上。

页面 A JQuery 和会话代码

    <?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    if(isset($_REQUEST['fs'])){

    $randval =  substr(md5(microtime()),rand(0,26),5);
    session_start();
    $_SESSION['rref'] = $randval;
    //some other code that works fine
    }}
    ?>

    <form method="REQUEST" id="form" name="form" class="aj">
      //some fields and codes
      <input type="hidden" name="fs" value="fs" id="fs" >
      <input type="submit" value="Reserve" id="btn-form-valid" style="text-align: center; font-weight: bold;" onclick="jQuery('.aj').parsley('validate');">
    </form>

    <script>
      jQuery(function() {
        jQuery('.aj').submit(function(e) {
          e.preventDefault();
          if ( jQuery(this).parsley().isValid() ) {
            jQuery.ajax({
              type: "post",
              data: jQuery(".aj").serialize(),
              success: function (data) {
                window.location.assign("http://location");
              }
              ,
              beforeSend: function() {
              }
            }
           });
          });
    </script>

页面B代码

    <?php
session_start();
    $x = $_SESSION['rref'];
    echo $x;
//nothing is returned
?>

我尝试寻找有类似问题但没有任何用处的人。

【问题讨论】:

    标签: javascript php jquery session redirect


    【解决方案1】:

    尝试将 session_start 放在开头:

    <?php
    session_start();
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        if(isset($_REQUEST['fs'])){
    
            $randval =  substr(md5(microtime()),rand(0,26),5);
    
            $_SESSION['rref'] = $randval;
            //some other code that works fine
        }
    }
    ?>
    

    【讨论】:

    • 我在两个页面中都这样做了,但没有用。
    • 用 var_dump(session_start()) 试试看是否返回 true
    • 它返回 bool(true)
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2014-03-18
    • 2016-06-07
    • 2023-03-29
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多