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

时间:2015-12-08 05:06:26

标签: javascript php jquery sql ajax

用户点击div后,此javascript函数运行:

$('.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';
            }
        });
    });

我想传入一个与用户点击的div关联的ID到我运行此代码的ajax.php文件中:

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

然而这不起作用。为了进一步扩展我传递的内容,获取rows['id']变量运行此SQL代码:

$sql_select = "SELECT id FROM ids WHERE id = '$id'";
$results_select = $conn->query($sql_select);
然后我输出了一堆id对应的div:

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

有谁知道我怎么能做到这一点?

2 个答案:

答案 0 :(得分:4)

使用数据属性:

尝试:

<?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';
            }
        });
    });

答案 1 :(得分:0)

请检查data: {"id": "<?php echo $rows['id']?>"}的JS代码。此行可能无法传递您的实际值,因此请将其存储到带 id 属性的 div 中,然后通过jQuery获取并传递它。

<强> 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:

使用上面的JS代码,您还需要对PHP代码进行一些更改:

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

请在 AJAX 帖子处理程序页面上通过print_r($_POST);确认此代码。这将打印 AJAX 代码所请求的 POST 数据。

如果对此有任何疑虑,请告诉我。