2013-03-07 37 views
1

我想在初始屏幕(JavaScript)客戶端驗證一個表單,並在文本框中沒有輸入文本時顯示警告框。點擊提交警告框中的確定後,網頁將返回到初始屏幕。PHP中的JavaScript

如果輸入了一些文本,JavaScript必須重定向到PHP文件。

到目前爲止,我想出了這個代碼:

<HTML> 
<HEAD> 
<TITLE>Discography Search</TITLE> 

<script language="javascript" type="text/javascript" > 

function validate(){ 
var username=document.getElementById('name').value; 
if(username.length==0) 
    { 
     alert("Enter something in Searchbox"); 
} 
} 
</script> 

</head> 


<BODY> 
<H1><center>Search</center></H1> 

<FORM ACTION="phpfile.php" METHOD=POST id="submit1"> 
Search: <INPUT NAME=name id="name"><BR> 
Type: <SELECT NAME="dropdown"> 
<OPTION value="A" ID="A">ARTIST</OPTION> 
<OPTION value="A" ID="B">B</OPTION> 
<OPTION value="C" ID="C">C</OPTION> 
</SELECT> 
<br><br><br> 
<INPUT TYPE=submit name="submit" onclick="validate()"> 
<INPUT TYPE=reset> 
</FORM> 

和phpfile.php:

<html> 
<head><title><center> Search Result</center></title></head> 
<body> 

<?php 
//echo $_POST["name"]; 
//echo $_POST["dropdown"]; 
$name=$_POST["name"]; 
$dropdown=$_POST["dropdown"]; 
if(empty($name)){ 

    alert("Please enter the something in the searchbox"); 
} 
else{ 
    $url="http://www.allmusic.com/search/".$dropdown."/".$name."/"; 
    echo $url; 
    //echo ' 
} 

?> 

</body> 
</html> 

但是,當空值檢查的一部分,警告框顯示,但phpfile執行,我得到以下錯誤:

Fatal error: Call to undefined function alert() in phpfile.php on line 12

  1. 單擊警告框中的確定,我該如何留在同一個js頁面上?
  2. 爲什麼我不能在js文件中包含alert()?

謝謝!

+0

你的想法不對。在頁面加載時解釋JavaScript。所以你不得不「回聲」出來,然後當頁面加載完成時,JavaScript解釋器將執行'alert()'。 'echo'';'。如果你只是想重定向,請使用'header()'(http://www.php.net/header()) – 2013-03-07 09:47:58

+0

你應該學習基本的JavaScript和PHP http:// tech。pro/tutorial/791/simple-ajax-php-and-javascript – 2013-03-07 10:05:36

回答

2
  1. 不要在按鈕上設置onclick,而是在返回驗證函數結果的窗體上設置onsubmit。

    <FORM ACTION="phpfile.php" METHOD=POST id="submit1" onsubmit="return validate()"> 
    

    然後在validate函數中返回'false'。這將阻止表單提交。

  2. 您不能在PHP(運行在服務器上)中運行JavaScript(運行在瀏覽器中)。

1

javascript和php是兩種不同的東西,你不能在php中包含javascript,並期望它的工作。讓PHP向頁面吐出一個標誌,例如$ notvalid。回到此頁面,例如

<script> 
var notvalid = <?php echo $notvalid; ?> 
</script> 

然後檢查js變量的值是否與javascript無效。

+0

但我該如何做客戶端驗證,然後進行服務器端驗證? – 2013-03-07 09:52:48

+1

在表單頁面上執行客戶端驗證 - 您可以攔截提交事件。在表單發佈時執行服務器端驗證並捕獲帖子值。 – matpol 2013-03-07 10:39:24

1

使用這種方式

<?php 
//echo $_POST["name"]; 
//echo $_POST["dropdown"]; 
$name=$_POST["name"]; 
$dropdown=$_POST["dropdown"]; 
if(empty($name)){ 
?> 
    <script type="text/javascript"> 
    alert("Please enter the something in the searchbox"); 
    </script> 
<?php 
} 
else{ 
    $url="http://www.allmusic.com/search/".$dropdown."/".$name."/"; 
    echo $url; 
    //echo ' 

} 

?>

1

你沒有把alert JavaScript代碼。你把它放在PHP代碼中。而且PHP沒有alert