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

Javascript 如何使用AJAX将变量传递给PHP?,javascript,php,mysql,ajax,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)) {

我在这个网站上搜索了适合这个场景的答案,但是没有找到

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

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> 
下面是将结果返回到AJAX调用的PHP文件:

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

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

这是因为您要回显底部的键,所以需要在循环时传递键

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> 

我个人建议1。不要将变量编码到函数调用中-从元素的属性中提取参数,2。不要使用像onclick这样的事件处理程序属性,而是使用jQuery来执行$'selector'。“单击”时,显示AjaxModal。在进行此操作时,我建议对原始代码进行大量其他更改…1不要使用echo输出html块,2在查询中使用字符串之前对其进行转义3使用PHP框架,4…:谢谢你的建议,非常感谢!我仍然在学习PHP,我是一名设计人员,所以我确实需要学习所有的最佳实践。