1

1ページに4つのボタンがあり、それぞれに独自のボタンがあります。ボタンがクリックされても、ページは更新されず、新しいページも開きません。

ボタンが押されたときに、そのボタンのIDをAjax経由でセッションの形式でphpファイルに送信したいと思います。4つのボタンはそれぞれ異なるID(1、2、3、4)を持っています。ユーザーが1つのボタンをクリックしてから、2番目のボタンなどをクリックした場合、クリックした各ボタンIDをこのセッションに追加します。

これは私がこれまでに持っているものです:

Jquery:

     $(document).ready(function() {  
     $('a[name=add]').click(function(e) {
     session = $(this).attr('id')

     $.post('sessions.php', {session:session}
    );              
     });
     });

つまり、「追加」という名前のボタンがクリックされたかどうかを確認し(4つのボタンすべてにその名前が付いている)、ボタンIDを取得してsessions.phpに送信します。

PHP:

    <?php
    session_start();
    $_SESSION['ids'] = $_POST['session'];  
    ?>

セッションを作成するだけです。

私が抱えている問題は、PHPセッションが最初にクリックされたボタンのIDを取得していることです。それだけです。別のボタンがクリックされた場合、AjaxはボタンIDを送信しますが、セッションは最初にクリックされたボタンのIDのみを保持します。

クリックした次のボタンのIDをセッションに追加するにはどうすればよいですか。

例:ボタン1と3がクリックされた場合、セッションにID1と3が必要です。

4

3 に答える 3

2

これは、Jqueryが名前またはIDを一意として扱うためです。そのため、JavaScript関数は最初のボタンのみを読み取ります。

解決:

4つのボタンに共通のクラス名を使用します。(<a class="sessionclass otherclasses" href="#"> 1 </a>)

次に、jqueryコードを変更します。

 $(document).ready(function() {  
     $('a.sessionclass').click(function(e) {
         session = $(this).attr('id');    
         $.post('sessions.php', {session:session}
         );              
    });
});

これで、phpセッションはクリック時に適切なボタン値を設定する必要があります。

そして私は@LimHに同意します。彼が提案したようにあなたのphpコードも変更してください。

于 2013-01-16T02:21:39.447 に答える
2
session_start();

// prepare $_SESSION['ids']
if ( ! is_array($_SESSION['ids']))
{
    $_SESSION['ids'] = array();
}

// fill $_SESSION['ids'] only with new $_POST['session'] posted
if ( ! in_array($_POST['session'], $_SESSION['ids']))
{
    $_SESSION['ids'][] = $_POST['session'];
}
于 2013-01-16T02:24:32.230 に答える
1
<?php
    session_start();
    $id = $_POST['session']);
    if(!isset($_SESSION['ids'])) {
        $_SESSION['ids']= array();         
    }

    $_SESSION['ids'][$id] = $_POST['session']';
?>

AJAXリクエストが行われるたびに、セッションIDが再初期化されるため、最終的には1つの値のみが残ります。したがって、セッションIDの配列を作成すると、すべての新しいID値がこの配列に挿入されます。

于 2013-01-16T02:17:42.823 に答える