调用PHP脚本而不更改页面

时间:2012-07-31 19:24:18

标签: php external

我正在努力建立一个处理学生和导师数据库的网站。我的问题是,到目前为止,我所知道的唯一可以运行PHP脚本(例如,从数据库中删除用户)的方法是将信息放在链接中并让用户单击该链接。这确实有效,但它很烦人,因为这意味着用户不断被重定向到新页面。我也一直在使用一些$ _SERVER ['PHP_SELF']?其他信息,但这很麻烦,因为它构建了同一页面的长堆栈(即尝试使用后退/前进功能浏览器将您带到同一页面)。

我希望能够生成链接/按钮,点击后,将信息传递给php脚本,无需重定向/更改页面(除非可能刷新页面以显示新结果)

我网站上的一个示例,其中该页面生成所有用户的列表,然后是相应的链接/按钮以删除每个用户:

//Gets the list of users and iterates through the data
while ($row = mysqli_fetch_array($data))

    {
        $fullname = $row['lastname'] . ", " . $row['firstname'];
        $username = $row['username'];
        $remove_link = "remove_user.php?username=$username";

        echo '
                  <tr>
                    <td>' . $fullname . '</td>
                    <td>' . $username . '</td>
                    <td> <a href="'. $remove_link . '">Remove this user.</a> </td>
                  </tr> 
        ';

    } 
echo '</table>';

当点击$ remove_link时,它会加载一个删除用户的php脚本,然后重定向回原始页面(user_list.php)。有没有办法只调用remove_user.php脚本而不重定向/更改页面?

提前致谢。

6 个答案:

答案 0 :(得分:2)

今天网站的工作方式是使用Ajax动态加载/更改网页内容。

使用Ajax的最佳方法是使用jQuery's Ajax函数。互联网上有很多教程将向您展示如何使用jQuery。

如果你不想在你的Ajax中使用jQuery,你可以使用老式的方式来实现它。您可以在w3schools.com上查看相关教程。

希望这有帮助!

答案 1 :(得分:1)

您需要开始熟悉javascript和AJAX。可能会考虑使用jQuery为你的javascript框架,因为它使这个相对简单,并且是最受欢迎的这样的框架,有广泛的支持。

答案 2 :(得分:0)

您需要通过Ajax执行此操作,其中一种最简单的方法是使用jQuery及其$.ajax$.post$.get$.getJson方法可以让你做你想做的事。

如果您还没有使用过jQuery,我建议您搜索一些教程,尤其是nettuts

答案 3 :(得分:0)

您可以使用不会在历史记录中添加路径的<a href="link">代替<a onlick="window.location.replace('link')">,而是可以使用PHP_SELF方法。

除此之外,你必须使用AJAX。

答案 4 :(得分:0)

5 Ways to Make Ajax Calls with jQuery

阅读本教程,它会对您有所帮助。

答案 5 :(得分:0)

除了顶部的答案。如果用户禁用了javascript,我会使用此AJAX回退脚本。 在删除脚本的末尾添加:

<?php
//check if the request is not done with ajax
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 
//now check if the http referer is not empty. It's where the click took place. And if it's not empty redirect back to where the user came from.
    if (!empty($_SERVER['HTTP_REFERER'])) {
        header("Location: " . $_SERVER['HTTP_REFERER']);
        exit;
    }
}
?>