我有一個從mysql生成表格的網頁。我在每一行的開頭都有一個按鈕。我希望如此,如果用戶決定按下按鈕,那個單獨行的內容將寫入MySQL中的新表。運行php腳本而不改變當前頁面的按鈕
目前我正在考慮將按鈕作爲連接到mysql並將行插入到表中的另一個php腳本的href;不過,我認爲這會重定向我目前的頁面。
我想按鈕來運行腳本,而不重定向我的當前頁面。這樣,用戶可以繼續分析表格,而不必每次都重新加載頁面。
這就是我目前的表。這僅僅是一個片段,而該表可能非常大(數百行)
我有一個從mysql生成表格的網頁。我在每一行的開頭都有一個按鈕。我希望如此,如果用戶決定按下按鈕,那個單獨行的內容將寫入MySQL中的新表。運行php腳本而不改變當前頁面的按鈕
目前我正在考慮將按鈕作爲連接到mysql並將行插入到表中的另一個php腳本的href;不過,我認爲這會重定向我目前的頁面。
我想按鈕來運行腳本,而不重定向我的當前頁面。這樣,用戶可以繼續分析表格,而不必每次都重新加載頁面。
這就是我目前的表。這僅僅是一個片段,而該表可能非常大(數百行)
爲了做到這一點客戶端,有一對夫婦的方式我能想到手工做的:
的Javascript
可以包括Javascript庫(如日益流行的jQuery庫),或代碼它自己,但是你可以實現這個作爲一個XMLHttpRequest,從按鈕的點擊處理程序發出的。使用圖書館將是最簡單的方法。
一個iframe
創建一個隱藏的iframe:
<iframe style="display:none;" name="target"></iframe>
然後,只需設置你的標籤的目標是IFRAME:
<a href="your_script.php" target="target">...</a>
只要有人點擊鏈接,該頁面將被加載到隱藏的iframe中。用戶不會看到任何改變,但您的PHP腳本將被處理。
在這兩個選項中,我建議使用Javascript庫,除非您由於某種原因不能這樣做。
我會在表格/按鈕的html代碼中創建隱藏的iframe,還是我可以在外面定義它? – 2012-08-14 18:32:39
@RayJTong我已經嘗試過這種技術已經有一段時間了,但我確信你可以把它放在頁面的任何地方。 – Telgin 2012-08-14 18:34:21
謝謝。另外就JQuery而言,XMLHTTPRequest對於用戶來說本質上是不可見的?我從來沒有真正使用JavaScript或Ajax的事。 – 2012-08-14 18:38:13
您需要在沒有重新加載頁面的情況下點擊按鈕,將記錄插入到mysql表中。 爲了完成上述任務,您需要使用AJAX,它會使用xmlhttprequest對象向後臺的http服務器發送http請求,從而在不重新加載網頁的情況下更新網頁。 所以你將不得不在JavaScript中創建一個函數,它將使用xmlhttprequest對象向服務器發送http請求,並且還需要定義服務器端處理程序以處理使用ajax發送的http請求。 對於PHP AJAX的實現細節,請參考以下鏈接中提到的例子 http://www.w3schools.com/php/php_ajax_php.asp
這很容易用做jQuery的:
<script>
$(function(){
$('#your_button_dom_id').click(function(){
$.ajax({
url: 'your_php_script_url',
type: 'POST', // GET or POST
data: 'param1=value1¶m2=value2', // will be in $_POST on PHP side
success: function(data) { // data is the response from your php script
// This function is called if your AJAX query was successful
alert("Response is: " + data);
},
error: function() {
// This callback is called if your AJAX query has failed
alert("Error!");
}
});
});
});
</script>
你可以在jQuery的在這裏閱讀更多關於AJAX:http://api.jquery.com/jQuery.ajax/
您可以在隱藏類型的提交按鈕後使用另一個輸入標籤。
<input class="ButtonSubmit" type="Submit" name="Submit" id="Submit" value="Submit"/>
</p>
<input type="hidden" name="submitted" id="submitted" value="true" />
在你的代碼的頂部使用後此
if (isset($_POST['submitted'])) {
// your code is here
}
這對我的工作。您可以在WordPress的模板中使用它,以及
我們稱之爲「AJAX」。只有沒有人再使用XML。 – 2012-08-14 18:13:16
雖然它真的是JavaScript嗎?我不需要在客戶端改變任何東西,只是我假設來自PHP的mysql的後端表。 – 2012-08-14 18:19:08
看到第一個「A」?這就是重中之重。 – 2012-08-14 18:19:42