你也可以使用Ajax對於這一點,每一個按鈕分配調用一個Ajax功能它自己PHP腳本,你甚至不需要刷新頁面或重定向,就像我嘗試過的這個例子:
HTML:
<input type="submit" value="Make other thing" onclick="ajax_post1();"/>
<input type="submit" value="Make something" onclick="ajax_post2();"/>
<div id="script1Response"></div>
<div id="script2Response"></div>
Javascript函數:
//第一功能
function ajax_post1(){
var hr = new XMLHttpRequest();
//從您要使用
var v1=document.getElementbyId("element1").value;
var v2=document.getElementbyId("element2").value;
//腳本的HTML輸入元素取值是將處理數據
var url="php_script1.php";
//將包含爲PHP腳本
var dataVar="var1="+v1+"&var2="+v2;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
的信息的變量//進入onreadystatechange事件的XMLHttpRequest對象
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var script_response = hr.responseText;
document.getElementById("script1Response").innerHTML = script_response;
}
}
//發送數據到php_script1.php
hr.send(dataVar); // Actually execute the request
document.getElementById("script1Response").innerHTML = "processing...";
}
//第二功能
function ajax_post2(){
var v1=document.getElementbyId("element1").value;
var v2=document.getElementbyId("element2").value;
var url="php_script2.php";
var dataVar="var1="+v1+"&var2="+v2;
var hr = new XMLHttpRequest();
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var script_response = hr.responseText;
document.getElementById("script2Response").innerHTML = script_response;
}
}
hr.send(dataVar);
document.getElementById("script2Response").innerHTML = "processing...";
}
個
PHP文件必須包含一些變量,將存儲由dataVar參數這樣發送的值:
$var1_=$_POST['var1']; //the var1 from the dataVar parameter
$var2_=$_POST['var2']; //the var2 from the dataVar parameter
我使用的例子可以在這裏找到: https://www.youtube.com/watch?v=woNQ2MA_0XU。
在上面的示例代碼中,兩個提交按鈕是冗餘的。它們兩個都將執行相同的操作。正確? – Jean 2010-10-22 18:22:28
@alertjean,這取決於腳本。提交按鈕具有不同的值,因此腳本可以確定哪個按鈕被點擊,並根據該按鈕做不同的事情。 – cjm 2010-10-22 19:35:19
通常使用'name'屬性可以區分不同的動作。例如。 ''和''。這樣你可以匹配簡化的動作名稱而不是實際的文本。這也是您使用多語言網站時唯一的方式,因爲價值永遠不會相同。 – Alec 2010-10-22 22:26:52