2012-07-31 77 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; 
    } 
} 
?> 
相關問題