为什么我的会话变量不会传递给弹出窗口?

时间:2013-09-23 03:29:05

标签: javascript php ajax session popup

我对此进行了很多研究,发现了一个类似的问题(参见Passing variable to the new popup window),但我仍然无法将会话变量传递给弹出窗口。简而言之,我正在尝试将一个基本的评论弹出框添加到我的网站中,以便用户可以在查看主页的不同部分时发表评论。我有一个主页(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中的comments字段时,如下所示:

 <input type='text' id='usercomment' value='<?php echo $user ?>' />

输入字段为空白。我非常感谢任何帮助,因为我是AJAX的新手!

1 个答案:

答案 0 :(得分:0)

您没有正确使用$_GET['variable']$_GET由PHP根据URL参数(例如?this=that&thisother=another

)定义

$_SESSION变量本身就是孤独的,只要您拨打session_start();

,就可以访问该变量

试试......

$user = $_SESSION['user'];

而不是ajax页面上的所有其他声明。一定要包含session_start();也在该页面的顶部。

最后,我没有看到你为$_SESSION['user']分配任何内容,所以请确保为该变量分配一些内容,例如id或者你正在尝试使用的内容。

但是,如果您坚持使用$_GET参数传递此信息。 ?id部分是您要在其他页面上引用的关键字。因此,而不只是$_GET['**$AjaxUser**'] $_GET['id']