如何使用AJAX将变量传递给PHP?

时间:2014-11-17 16:34:14

标签: javascript php mysql ajax

我在这个网站上搜索了适合这种情况的答案,但却没有。

这是从所有用户的数据库返回结果的函数:

function management_active() {

include('db.php');
include('connect.php');

$result = mysqli_query($con,"SELECT * FROM $table_name WHERE activ_status='1'");

while($row = mysqli_fetch_array($result)) {

    echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['username'] . '</td>';
        echo '<td>' . $row['email'] . '</td>';
        echo '<td>';
            echo '<a href="javascript:;" onclick="showAjaxModal();" class="btn btn-primary btn-xs" data-toggle="tooltip" data-placement="top" title="" data-original-title="View Profile"><i class="fa fa-eye"></i></a>';
            echo '<a href="javascript:;" onclick="editAjaxModal();" class="btn btn-primary btn-xs" data-toggle="tooltip" data-placement="top" title="" data-original-title="Edit User"><i class="fa fa-cogs"></i></a>';
            echo '<a href="javascript:;" onclick="delAjaxModal();" class="btn btn-primary btn-xs" data-toggle="tooltip" data-placement="top" title="" data-original-title="Remove User"><i class="fa fa-trash"></i></a>';
        echo '</td>';
    echo '</tr>';   

    global $user_link;
    $user_link = $row['activ_key'];

}

}

此功能显示表中活动的所有用户,然后我有一些按钮,允许用户以模态查看用户的配置文件。模态需要通过AJAX加载用户的数据。

这是页面底部的JQUERY脚本:

<script type="text/javascript">
function showAjaxModal()
{
    jQuery('#show-modal').modal('show', {backdrop: 'static'});

    setTimeout(function()
    {
        jQuery.ajax({
            url: "data/ajax-profile.php",
            data: "u=<?php echo $key; ?>",
            success: function(response)
            {
                jQuery('#show-modal .modal-body').html(response);
            }
        });
    }, 800);
}
</script> 

这是PHP文件,它将结果返回给AJAX Call:

$user_link = $_GET['u'];

if ($user_link==="$user_link") {

    $result = mysqli_query($con,"SELECT * FROM $table_name WHERE activ_key='$user_link'");
    while($row = mysqli_fetch_array($result)) {

        echo $row['username'];
        echo $row['fname'];
        echo $row['lname'];

    }

} else {
    echo '
    <div class="alert alert-danger">
        <button type="button" class="close" data-dismiss="alert">
            <span aria-hidden="true">&times;</span>
            <span class="sr-only">Close</span>
        </button>

        <strong>Oh Snap!</strong> Something went terribly wrong.
    </div>
    ';   
}

问题是我似乎无法获得正确的用户详细信息,它总是输出数据库表中的最后一行。

1 个答案:

答案 0 :(得分:1)

这是因为你在底部回显键,你需要在循环时传递密钥

echo '<a href="javascript:;" onclick="showAjaxModal(\'' . $row["activ_key"] . '\');" class="btn btn-primary btn-xs" data-toggle="tooltip" data-placement="top" title="" data-original-title="View Profile"><i class="fa fa-eye"></i></a>';

然后需要JS函数中的键

<script type="text/javascript">
function showAjaxModal(key)
{
    jQuery('#show-modal').modal('show', {backdrop: 'static'});

    setTimeout(function()
    {
        jQuery.ajax({
            url: "data/ajax-profile.php",
            data: "u="+key,
            success: function(response)
            {
                jQuery('#show-modal .modal-body').html(response);
            }
        });
    }, 800);
}
</script>