2013-02-17 119 views
1

如果我有一個將執行PHP腳本的提交按鈕,我可以執行它,而無需實際訪問該頁面,即:process.php?我習慣於JavaScript能夠做到這一點。執行PHP而不被重定向到動作鏈接文件?

(對,我說的是沒有AJAX,沒有其他的網頁重定向一旦備案,不,我不是很樂觀。)

+0

您是否嘗試過的javascript:無效(0)。 http://stackoverflow.com/questions/1291942/what-does-javascriptvoid0-mean。順便說一句,你爲什麼要留在同一個網站。無論如何,你也可以嘗試使用post,然後在動作中使用相同的頁面,或者使用$ _SERVER ['PHP_SELF']以腳本保留在php頁面上。如果沒有提交展示表單,並提交時顯示在同一頁上你喜歡什麼。 – 2013-02-17 00:51:46

+0

道格史密斯你問題解決了嗎? – 2013-02-20 16:38:43

回答

3

的原因,你可以用JavaScript來做到這一點是因爲JavaScript可以在客戶端的瀏覽器中執行。另一方面,PHP總是在服務器上執行並將HTML返回給客戶端。總之,不,你不能。

1

一個辦法做到這一點沒有AJAX是將表格提交到一個無形的iframe,就像這樣:

<form action="blah.php" target="theReallyCoolIframe">...</form> 
<iframe name="theReallyCoolIframe></iframe> 

注意,這不是一個真正的非常優美的解決方案; AJAX總體上是一個更好的解決方案,並不難 - 你應該看看jQuery及其AJAX APIs

0

試試這個,如果你想使用PHP的解決方案來解決你的問題。

<?php 


function submit_form(){ 
    $host = "localhost"; 
    $user = "user"; 
    $password = "password"; 
    $database = "database"; 

    $firstname = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 
    $lastname = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING); 
    $email = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL); 


    // open connection to database 
    $link = mysqli_connect($host, $user, $password, $database); 
     IF (!$link){ 
      echo ("Unable to connect to database!"); 
     } 
     ELSE { 
      //INSERT VALUES INTO DATABASE 
      $query = "INSERT INTO users (firstname,lastname,email) 
VALUES('".$firstname."', '".$lastname."', '".$email."'"; 
      return mysqli_query($link,$query); 

     } 
//close connection to database 
     mysqli_close($link); 

    } 


$form = <<<EODuserform 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Form</title> 
    </head> 
     <form action="{$_SERVER['PHP_SELF']}" method="POST" name="userform"> 
      <label for='first'>First Name:</label></br> 
      <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="firstname" /></br> 
      <label for='first'>Last Name:</label></br> 
      <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='2' VALUE="lastname" /></br> 
      <label for='email'>E-mail:</label></br> 
      <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="email" /></br> 
      <input type="submit" class='button' name="submit" value="submit" tabindex='4' /> 
      </form> 
    </body> 
</html> 
EODuserform; 


IF(!IsSet($_POST['submit'])){ // Check if form is not send, if not display empty form. 

    echo $form; 
} 

ELSE{ 
// in the case you want to send something to the database use 
submit_form(); 
echo ('Thanks for submitting your form'); 
} 

?> 

這是你可以在此頁面上找到類似的腳本一個非常基本的腳本:Form not saving to database

+0

所以你告訴我,這個工作沒有任何導航?我不知道PHP執行或甚至傳輸到客戶端系統?這是我的理解,PHP在服務器上執行,然後發送HTML到客戶端。 參考 http://w3schools.com/php/default.asp – 2013-02-17 01:19:30

+0

「什麼是PHP PHP 代表PHP:Hypertext Preprocessor的 PHP是一種廣泛使用的開源腳本語言PHP 腳本的執行服務器 PHP是免費下載和使用「 http://w3schools.com/php/php_intro.asp – 2013-02-17 01:20:21

+0

@AMR感謝您的意見。按下提交按鈕後,表單將在服務器上執行。然後執行下一個循環。然而,對於該頁面的訪問者,瀏覽器中的位置保持不變。 – 2013-02-17 01:30:09