我試圖尋找其他類似的帖子,但顯然,我做了一些錯誤的地方,沒有我注意到它,因爲我的PHP,HTML和JavaScript技術是非常過時的。最後我去年觸及了這些東西,所以我的許多故障檢測技能都很生疏。Javascript不能在PHP中運行
話雖這麼說,一段代碼,我試圖做的是結構化這樣
<?PHP //If?> JS //Script to check if input is empty and prevents submission HTML <!--Input Forms--> <?PHP //DB actions ?>
據我所能做的,PHP的語法似乎是正確的(採用php格式化程序來檢查我的語法是否錯誤)。這裏的問題是JavaScript部分甚至沒有運行。如果運行,UI的其餘部分(登錄表單)將無緣無故地消失(當提供輸入時)。
以下是我正在使用的代碼。
<?php
if(empty($_POST["username"]) && empty($_POST["password"])){
?>
<script type="text/javacsript">
function checkField()
{
if((login-form.username.value == "") || (login-form.password.value == ""))
{
alert("Please fill in both Username and Password fields");
return false;
}
else
return true;
}
</script>
<div class="panel-body">
<form role="form" id="login-form" action="login.php" method="post" onsubmit="return checkField();">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" id="username" type="text" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" id="password" type="password" value="">
</div>
<!-- Change this to a button or input when using this as a form -->
<!--<a href="index.html" class="btn btn-lg btn-success btn-block">Login</a>-->
<div class="form-group">
<button class="btn btn-lg btn-success btn-block" type="submit">Login</button>
</div>
</fieldset>
</form>
</div>
<?php
}else {
$message = "wrong answer";
echo "1<script type='text/javascript'>alert('$message');</script>";
}
?>
的JavaScript的onsubmit是這裏的主要關注點。當假定的真實條件被觸發時(甚至兩個輸入中的任何一個爲空或者兩個都爲空)它甚至不會運行。下面的輔助腳本,就是我在提供數據庫部分之前的最初測試。解決錯字用於校驗場使用的getElementById
編輯1
Alt鍵代碼()
<script type="text/javacsript">
function checkField()
{
if((document.getElementById("username").value == "") || (document.getElementById("password").value == ""))
{
alert("Please fill in both Username and Password fields");
return false;
}
else
return true;
}
</script>
編輯2
後,當兩個登錄名和密碼字段是不被觸發PHP部分空不運行。動作屬性可能有一隻手
<form role="form" id="login_form" action="" method="post" onsubmit="return checkField();">
上面的代碼是爲了測試action屬性是否是罪魁禍首。結果仍然是一樣的。該頁面將重新加載空字段。
最新代碼
<?php
if(empty($_POST["username"]) && empty($_POST["password"])){
?>
<script type="text/javascript">
function checkField()
{
if((document.getElementById("username").value == "") || (document.getElementById("password").value == ""))
{
alert("Please fill in both Username and Password fields");
return false;
}
else
return true;
}
</script>
<div class="panel-body">
<form role="form" id="login_form" action="" method="post" onsubmit="return checkField();">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" id="username" type="text" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" id="password" type="password" value="">
</div>
<!-- Change this to a button or input when using this as a form -->
<!--<a href="index.html" class="btn btn-lg btn-success btn-block">Login</a>-->
<div class="form-group">
<button class="btn btn-lg btn-success btn-block" type="submit">Login</button>
</div>
</fieldset>
</form>
</div>
<?php
}else {
$conn = mysqli_connect("localhost","root","rootacc","test");
if($conn)
{
echo "success";
header("LOCATION:tables.html");
}
}
?>
編輯3點
解決了所有的問題。對於新手問題抱歉,感謝所有參與者。下面是更正後的代碼
<?php
if(empty($_POST["username"]) && empty($_POST["password"])){
?>
<script type="text/javascript">
function checkField()
{
if((document.getElementById("username").value == "") || (document.getElementById("password").value == ""))
{
alert("Please fill in both Username and Password fields");
return false;
}
else
return true;
}
</script>
<div class="panel-body">
<form role="form" id="login_form" action="" method="post" onsubmit="return checkField();">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" id="username" name="username" type="text" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" id="password" name="password" type="password" value="">
</div>
<!-- Change this to a button or input when using this as a form -->
<!--<a href="index.html" class="btn btn-lg btn-success btn-block">Login</a>-->
<div class="form-group">
<button class="btn btn-lg btn-success btn-block" type="submit">Login</button>
</div>
</fieldset>
</form>
</div>
<?php
}else {
$conn = mysqli_connect("localhost","root","rootacc","test");
if($conn)
{
echo "success";
header("LOCATION:tables.html");
}
}
?>
問題1是由於我自己的編程草率(使用破折號,而不是其他樣式變量引用的),以及上的getElementById知識的缺乏
第2期是由於我自己的錯字沒有發現。
問題3是由於對id和名稱缺乏瞭解(似乎相同)
所有解決問題的建議都已實施。
控制檯中的任何錯誤? –
「javascript部分甚至沒有運行,如果它運行...」那麼它是什麼?它是否運行? –
'login-form.username.value' - 這個語句_subtracts_'form.username.value' from'login',這不是你想要的。而且由於依靠瀏覽器自動創建引用具有ids的元素的全局變量是一個非常糟糕的做法,所以您希望使用'document.getElementById'來獲取對輸入字段的引用。 – CBroe