[英]Why isn't my session variable being passed to popup?
我對此進行了大量研究,發現了一個類似的問題(請參閱將變量傳遞給新的彈出窗口 ),但是我仍然無法將會話變量傳遞給彈出窗口。 簡而言之,我正在嘗試將一個基本評論彈出框合並到我的網站中,以便用戶可以在查看首頁的不同部分時發表評論。 我有一個主頁(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的comment字段中時,如下所示:
<input type='text' id='usercomment' value='<?php echo $user ?>' />
輸入字段為空白。 我將不勝感激,因為我是AJAX的新手!
您沒有正確使用$_GET['variable']
。 $_GET
由PHP根據URL參數(例如?this=that&thisother=another
。
$_SESSION
變量本身是一個孤獨的變量,無論您在哪里調用session_start();
都可以訪問它session_start();
你試一試...
$user = $_SESSION['user'];
而不是ajax頁面上的所有其他聲明。 確保包括session_start(); 在該頁面的頂部。
最后,我看不到您為$_SESSION['user']
分配了任何內容,因此請確保為該變量分配了一些內容,例如id或您要使用的任何內容。
但是,如果您堅持要使用$_GET
參數傳遞此信息。 ?id
部分是您希望在另一頁上引用的鍵。 因此,不是$_GET['**$AjaxUser**']
而是$_GET['id']
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.