【发布时间】:2014-08-25 22:51:31
【问题描述】:
我正在使用 Ajax 调用将 ID 传递给一个只更新会话变量 (ID) 的小 php 文件。然后,我使用另一个 php 文件打开一个新选项卡,该文件通过在 MySQL 中引用特定于该 ID 的信息填充页面。 ajax 调用成功。网络流量显示代码 200。然后我在新选项卡中打开新页面。但发送的 ID 从未到达 $_POST['ID'] 数组元素。
ajax 代码由捕获当前 ID 值的单击事件触发。 .
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 相关的主题,但似乎没有一个适合。任何建议表示赞赏。
【问题讨论】:
-
你在js中验证过你做pkg的时候设置了ID吗?
-
isset 会失败对我来说没有意义。但是,你还有另一个问题。 partEdit 的 window.open 将在 post to updateSessionIDVar 完成之前发生。如果您依赖它在 partEdit 之前运行,您应该在您的 ajax 请求的成功函数中移动它。
-
@BarbaraLaird 好问题。是的,我刚查过。它显示为 ID:“75”,这是一个有效的键值对。
-
@BarbaraLaird 我想我试过了,但现在让我再做一次。这似乎是一个可能的比赛时间问题,但不确定。
-
@BarbaraLaird window.open 在成功回调中没有任何区别。 php-main/updateSessionIDVar.php 仍然只是将 ID 设置为 63。
标签: php jquery mysql ajax session-variables