dongqing7789
2015-12-08 05:06
浏览 67
已采纳

使用AJAX在PHP中设置会话变量

After a user clicks a div this javascript function runs:

$('.test').click(function(e)
    {
        e.preventDefault();
        $.ajax({
            url: 'ajax.php',
            type: 'POST',
            data: {"id": "<?php echo $rows['id']?>"},
            success:function(data){
                window.location.href = 'index.php';
            }
        });
    });

I want to pass in an ID associated with the div the user clicks into my ajax.php file where this code runs:

<?php
    session_start();
    //connect to db here
    $_SESSION['id'] = $_POST['id'];
?>

However this is not working. To expand further what I did to pass get the rows['id'] variable is run this SQL code:

$sql_select = "SELECT id FROM ids WHERE id = '$id'";
$results_select = $conn->query($sql_select);

I then outputted a bunch of divs with id's corresponding to them:

<?php
    while ($select_rows = mysqli_fetch_array($results_select))
    {
        echo "<div class = 'test'></div>";
    }
?>

Does anyone know how I can accomplish this?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doucheng5705 2015-12-08 05:12
    已采纳

    Use data attributes:

    Try:

    <?php
        while ($select_rows = mysqli_fetch_array($results_select))
        {
            echo "<div data-id='".$rows['id']."' class = 'test'></div>";
        }
    ?>
    

    js:

    $('.test').click(function(e)
        {
            e.preventDefault();
            $.ajax({
                url: 'ajax.php',
                type: 'POST',
                data: {"id": $(this).attr('data-id')},//fetch the data attribute 
                success:function(data){
                    window.location.href = 'index.php';
                }
            });
        });
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • duanliang2017 2015-12-08 05:36

    Please check your JS code for data: {"id": "<?php echo $rows['id']?>"}. This line may not be able to pass your actual value so store it into div with id attribute and get it by jQuery and pass it.

    JS:

    $('.test').click(function(e)
    {
        dataValue = $(this).attr('id');//Get user clicked div id attribute value...
        e.preventDefault();
        $.ajax({
            url: 'ajax.php',
            type: 'POST',
            data: {"id": dataValue},
            success:function(data){
                window.location.href = 'index.php';
            }
        });
    });
    

    PHP:

    With above JS code you need to make some change for PHP code as well:

    while ($select_rows = mysqli_fetch_array($results_select))
    {
        echo "<div class = 'test' id='". $select_rows['id'] ."'></div>";
    }
    

    Please confirm this code by print_r($_POST); on AJAX post handler page. This will print the POST data requested by AJAX code.

    Let me know if there is any concern regarding this.

    评论
    解决 无用
    打赏 举报