我正在使用Ajax调用将ID传递给只更新会话变量(ID)的小型php文件。然后我使用另一个php文件打开一个新选项卡,该文件通过在MySQL中引用它来填充页面,其中包含特定于该ID的信息。 ajax调用成功。网络流量显示代码200.然后我在新选项卡中打开新页面。但是发送的ID从未进入$ _POST ['ID']数组元素。
ajax代码由捕获curr ID值的click事件触发。
var pkg = {ID:ID};
$.ajax({
type: "POST",
url: "../php-main/updateSessionIDVar.php",
data: pkg,
success: console.log("ID value from ajax post:" + ID), // this shows OK
error:function(jqXHR, textStatus, errorThrown){
console.log("Error type" + textStatus + "occured,
with value " + errorThrown)
}
});
window.open('partEdit.php','_blank');
updateSessionIDVar.php文件。 。
<?php
if (session_status() == PHP_SESSION_NONE) session_start();
if (isset($_POST['ID'])) { //this test always fails
$ID=$_SESSION['currID']=$_POST['ID'];
}
else $_SESSION['currID']='63'; // Dummy val so I can test the rest of my code
$user=$_SESSION['userID'];
?>
开始生成新页面“partEdit.php”的php文件。 。
<?php if (session_status() == PHP_SESSION_NONE) session_start();
$ID=$_SESSION['currID'] ;
$user=$_SESSION['userID'];
?>
<html> etc.
我已经阅读了其他一些与SO相关的线程,但似乎都没有。任何建议表示赞赏
答案 0 :(得分:1)
在重新阅读了几个相关问题后,我完全放弃了Ajax调用,并尝试在window.open函数的主体中发送var partID。像这样:
window.open('partEdit.php?partID='+partID, target='_blank');
使用此策略,在partEdit.php文件中,我能够访问$ _GET数组以查找partID的值。
$partID=$_GET['partID'];
虽然我仍然不明白为什么使用Ajax调用发布partID的值不起作用,但这样做了。我认为我的问题在于清楚地了解$ _POST [] var如何在“会话”期间设置和清除,其中可以有多个域选项卡,用户可以在它们之间单击鼠标并打开新选项卡(或窗口)
我恐怕我现在甚至不知道如何提问。但是,如果有人知道我在哪里可以找到一个很好的参考资料来详细说明服务器和活动窗口之间的数据传输区域,请将链接(或书名)放在评论中。我发现很多天后我都没有找到明确的解释。
答案 1 :(得分:0)
你所做的一切似乎都很好。如果任何会话变量发生更改,请尝试刷新页面。这样缓存/加载的东西就更新了。