簡體   English   中英

PHP會話變量不通過AJAX調用持久化

[英]PHP session variable not persisting through AJAX call

我想使用HTML鏈接來更改PHP中的會話變量。 為此,我設置了一個HTML“a”標簽,可以調用如下所示的javascript函數:

function changeValue(name){
  data = "key='person'&value=" + _name;
  $.ajax({
      url: www_root + "/funcs.php?func=set_session_var",
      type: "post",
      data: data,
      success: function(data){
          console.log(data);
      }
  }); 
  }

然后,我有funcs.php腳本,它具有如下set_session_var函數:

function set_session_var(){
   session_start();
   $key= trim($_GET["key"]);
   $value= trim($_GET["value"]);
   $_SESSION[$key] = $value;
   session_write_close();
   echo $key;
}

然后,原來的php / html頁面會重新加載,但它會首先加載一個外部頁面(稱之為item.php)來解決所有的php會話內容。 看起來像這樣:

session_start()
$session_id = session_id();
$sc = $_SESSION['person'];

但是,盡管AJAX成功函數返回正確的值,但$ sc變量始終顯示為空。 我已經檢查了兩個腳本的session_id,它們是相同的。 我還嘗試在item.php中設置會話變量,並且它仍然存在。 只是當我使用funcs.php腳本設置會話變量時,它不會保存。

任何和所有的想法都表示贊賞!

你正在發送報價:

data = "key='person'&value=" + _name;
            ^------^

這意味着你有效地做了:

$_SESSION["'person'"] = $value;
           ^------^-

請注意,這些單引號已成為會話密鑰名稱的PART。

嘗試

data = "key=person&value=" + _name;
            ^----^--- no quotes

代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM