我正在尝试回显javascript以查看(isset($ _ POST ['action'))是否返回true。但每次我点击按钮。它没有做任何违背它应该做的事情。似乎是什么原因?
编辑:我包含了整个代码。这里有问题吗?我几乎尝试了所有的建议,但仍然没有工作。
<div class="container">
<form action="" method="post">
<div class="row">
<div class="input-field col">
<h5>Patient Details</h5>
<div class="row">
<div class="input-field col">
<i class="material-icons prefix">assignment_ind</i>
<input type="text" name="patientName" class="validate">
<label for="patientName">Patient Name</label>
</div>
<div class="input-field col s3">
<select name="bloodType" required>
<option value="" disabled selected>Select Blood Group</option>
<?php
$q = $db->query("select * from tblbloodtype where btStatus = '1' ORDER by bloodTypeName");
while($r = $q->fetch(PDO::FETCH_ASSOC)){
echo"<option value=".$r['bloodTypeID'].">".$r['bloodTypeName']."</option>";
}
?>
</select>
<label>Blood Group</label>
</div>
<div class="input-field col s3">
<select name="city" required>
<option value="" disabled selected>Select City</option>
<?php
$q = $db->query("select * from tblcity where status = '1' ORDER by cityName");
while($r = $q->fetch(PDO::FETCH_ASSOC)){
echo"<option value=".$r['cityID'].">".$r['cityName']."</option>";
}
?>
</select>
<label>City where it is needed</label>
</div>
</div><!--ROW-->
<div class="row">
<div class="input-field col s12 ">
<i class="material-icons prefix">business</i>
<textarea id="hospitalName" class="materialize-textarea"></textarea>
<label for="hospitalName">Hospital Name and Address</label>
</div>
</div>
<div class="row">
<div class="input-field col">
<i class="material-icons prefix">perm_identity</i>
<input type="text" name="doctorName" class="validate">
<label for="doctorName">Doctor's Name</label>
</div>
</div>
<h5>Contact Details</h5>
<div class="row">
<div class="input-field col">
<i class="material-icons prefix">perm_identity</i>
<input type="text" name="contactName" pattern="[a-zA-Z0-9']+" class="validate">
<label for="contactName">Contact Name</label>
</div>
<div class="input-field col">
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" class="validate">
<label for="email">Contact Email</label>
</div>
<div class="input-field col">
<input type="text" name="contactNum" pattern="[0-9+]{7,13}" class="validate">
<label for="contactNum">Contact Number</label>
</div>
<input class="btn waves-effect waves-light" type="submit" value="Send Request" name="action">
</form>
</div><!--CONTAINER-->
<?php
if(isset($_POST['action'])){
echo "<script>alert('Success! Redirecting to homepage..');</script>";
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
?>
答案 0 :(得分:1)
我终于找到了问题,首先感谢您的努力。
正如您在上面的代码中看到的,我在输入标记上添加了required
属性。因此,除非我选择有价值的东西,否则我可以成功回应警报。
我花了很长时间才注意到它,因为它没有显示错误消息,我需要选择一些东西。
答案 1 :(得分:0)
更改
$_REQUEST['action ']
要
$_REQUEST['action']
(注意最后删除的空格)
同时更改
<script>alert('Success! Redirecting to homepage..);</script>
要
<script>alert('Success! Redirecting to homepage..');</script>
(请注意两点后的引用)
只允许在标题部分使用元标记。尝试删除此行:
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
您可以在body部分中使用meta来实现语义目的:
<meta itemprop="ratingValue" content="4" />
并且,如此处所述http://schema.org/docs/gs.html#advanced_missing
此技术应该谨慎。仅使用带内容的元数据 无法以其他方式标记的信息。
所以你必须避免这种情况。
编辑:
前3个div没有结束标记。关闭这些div。不关闭它们,<script>
标记由标记内的php打印。
同样替换它:
echo"<option value=".$r['bloodTypeID'].">".$r['bloodTypeName']."</option>";
用这个:
echo "<option value='".$r['bloodTypeID']."'>".$r['bloodTypeName']."</option>";
(注意value属性中的单引号)
同样的事情
echo"<option value=".$r['cityID'].">".$r['cityName']."</option>";
将其替换为:
echo "<option value='".$r['cityID']."'>".$r['cityName']."</option>";
(注意回声之间的空格)
答案 2 :(得分:-1)
if(isset($_POST['action'])){
echo "<script>alert('Success! Redirecting to homepage..');</script>";
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
删除了$_POST['action']
单引号已关闭'Success! Redirecting to homepage..'
在echo echo "<meta http-equiv='refresh' content='0;url=index.php'>";
答案 3 :(得分:-2)
将$_POST['action ']
中的空格移至$_POST['action']
。