2012-07-31 76 views
3

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

我希望能够生成链接/按钮,当点击时,将信息传递给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脚本?

在此先感谢。

+8

答案:Ajax请求。 – Alfabravo 2012-07-31 19:25:01

+0

它仍然让我惊讶,有多少人问同样的问题。 http://stackoverflow.com/search?q=call+script+without+refresh – Matt 2012-07-31 19:28:30

回答

2

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

使用Ajax的最佳方式是使用jQuery's Ajax函数。互联网上有很多教程,会告诉你如何使用jQuery。

如果你不想为你的Ajax使用jQuery,你可以使用老式的方法来做到这一点。你可以在w3schools.com上查看教程。

希望这会有所帮助!

1

您需要开始熟悉javascript和AJAX。大概看看为你的JavaScript框架使用jQuery,因为它使这个相对简单,并且是最流行的这样的框架,得到广泛的支持。

0

你需要通过Ajax要做到这一点,要做到这一点是jQuery及其$.ajax$.post$.get$.getJson方法至极会让你做你想做的事最简单的方法之一。

如果你还没有使用jQuery的,我会建议你寻找一些教程尤其是在nettuts

0

相反的<a href="link">可以使用<a onlick="window.location.replace('link')">不添加路径走进了历史,你可以使用PHP_SELF做法。

除此之外,你将不得不使用AJAX。

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; 
    } 
} 
?> 
相关问题