我对此进行了很多研究,发现了一个类似的问题(请参阅将变量传递到新的弹出窗口),但我仍然无法将会话变量传递给弹出窗口。简而言之,我试图在我的网站中加入一个基本的评论弹出框,以便用户可以在查看主页的不同部分时发表评论。我有一个主页(home.php),用户从该主页单击指向弹出窗口的链接。请注意,对于页面的每个其他方面,home.php 上的会话变量都可以正常工作。用户点击 home.php 上的评论弹框打开 usercomments.php 如下(弹框打开没有问题;home.php 的相关代码如下):
<?php session_start();
include 'connect.php';
$_SESSION['login_id'];
$_SESSION['user'];
**$AjaxUser** = $_SESSION['user']; //All bolded text only added here for clarity
?>
//Lots of code
<div id="commentsbox"<?php echo "<a
href='http://www.website.com/usercomments.php?id=".**$AjaxUser**."'
onclick=\"wopen('http://www.website.com/usercomments.php', 'popupname',
'width=600,height=600,scrollbars');return false;\"><img src=\"images/comments.png\"
style=\"float:right; margin-right:5px\" height=\"22\" width=\"22\"></a>";?></div>
我认为 $AjaxUser 被传递给 usercomments.php 有错吗?在弹出的 usercomments.php 中,用户发表评论,显示没有问题。但是,用户名不会与帖子一起显示(注意:当将类似代码合并到网站上的现有页面中而不是作为弹出窗口时,发布者的用户名会正确显示......更多证据表明会话变量不传递给弹出窗口)。这是 usercomments.php 的 php 和 AJAX 代码:
<?php session_start();
include 'connect.php';
$_GET['$AjaxUser'];
$user=$_GET['$AjaxUser'];
?>
//lots of code
function ajaxFunction(){
var ajaxRequest;
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
alert("Problem encountered");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var user = "<**?php echo $user;** ?>";
var usercomment = document.getElementById('usercomment').value;
var queryString = "?usercomment=" + usercomment + "&user" + user;
ajaxRequest.open("GET", "AJAX_test.php" + queryString, true);
ajaxRequest.send(null);
还是我尝试获取 $AjaxUser 的方式有问题,甚至是我在上面的 AJAX 代码中分配 var 用户的方式有问题?我的猜测是 $AjaxUser 甚至没有从 home.php 传递,因为当我将 $user 输入到 usercomments.php 中的注释字段时,如下所示:
<input type='text' id='usercomment' value='<?php echo $user ?>' />
输入字段为空白。我非常感谢任何帮助,因为我是 AJAX 的新手!