0

私はこれについて多くのことを調査し、同様の質問を1つ見つけました(変数を新しいポップアップウィンドウに渡すを参照)が、それでもセッション変数をポップアップに渡すことができません。簡単に言うと、ユーザーがホームページのさまざまな部分を見ながらコメントを投稿できるように、基本的なコメント ポップアップ ボックスを Web サイトに組み込んでみようとしています。ユーザーがポップアップ ウィンドウへのリンクをクリックするホームページ (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 からも渡されていません。これは、次のように usercomments.php のコメント フィールドに $user を入力すると、次のようになるためです。

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

入力フィールドは空白です。私はAJAXを初めて使用するので、助けていただければ幸いです。

4

1 に答える 1

0

$_GET['variable']を正しく使用していません。$_GETなどの URL パラメータに基づいて PHP によって定義されます?this=that&thisother=another

変数はそれ$_SESSION自体で独立しており、どこからでもアクセスできますsession_start();

ちょうど試して...

$user = $_SESSION['user'];

ajax ページの他のすべての宣言の代わりに。必ず session_start(); を含めてください。そのページの上部にも。

最後に、何も割り当てていない$_SESSION['user']ので、id など、使用しようとしている変数に何かを割り当てていることを確認してください。

$_GETただし、パラメーターを使用してこの情報を渡すことを主張している場合。この?id部分は、他のページで参照しようとしているキーです。$_GET['**$AjaxUser**']だからただの代わりに$_GET['id']

于 2013-09-23T03:38:44.063 に答える