表单提交时,PHP文件将作为新页面打开,而不是执行脚本
我创建了一个联系人表单,该表单将通过ajax PHP进行验证,然后使用PHP发送电子邮件 当我单击submit时,页面将在新页面重新加载,而不是执行PHP脚本和验证: mypage.com/form_process.php表单提交时,PHP文件将作为新页面打开,而不是执行脚本,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我创建了一个联系人表单,该表单将通过ajax PHP进行验证,然后使用PHP发送电子邮件 当我单击submit时,页面将在新页面重新加载,而不是执行PHP脚本和验证: mypage.com/form_process.php <?php if(isset($_POST['submit'])) { $name = $_POST['name']; $email = $_POST['email']; $signature = $_POST['signature'];
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$signature = $_POST['signature'];
$message = $_POST['messages'];
$company = $_POST['company'];
$ErrorEmpty = false;
$ErrorEmail = false;
if (empty($name) || empty($email) || empty($signature)){
echo "<span class='form-error'>Please fill in required fields</span>";
$ErrorEmpty = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "<span class='form-error'>Please fill in a valid email address</span>";
$ErrorEmail = true;
}
else {
echo "<span class='form-success'>Please fill in a valid email address</span>";
}
}
else{
echo "There was an Error!";
}
$mailto = "contact@email.co.uk";
$headers = "from:".$company;
$txt = "Your Proof of delivery was signed for by:".$name;
mail($mailto, $headers, $txt );
header("location: index.php?POD_sent");
?>
<script>
$("#name, #email, #txt").removeClass(input-error);
var ErrorEmpty = "<?php echo $ErrorEmpty; ?>";
var ErrorEmail = "<?php echo $ErrorEmail; ?>";
if(ErrorEmpty == true) {
$("#name, #email, #txt").addClass("input-error");
}
if(ErrorEmail == true) {
$("#email").addClass("input-error");
}
if(ErrorEmpty == false && ErrorEmail == false) {
$("#name, #email, #txt").val("")
}
</script>
此外,它不会加载样式表
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script src= "https//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<?php include('form_process.php'); ?>
<link rel="stylesheet" type="text/css" href="form.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script>
$(document).ready(function) {
$("form").submit(function(event) {
event.preventDefault();
var name = $("name").val();
var email = $("email").val();
var signature = $("signature").val();
$(".form-message").load("form_process.php", {
name: name,
email: email,
signature: signature
});
});
});
</script>
</head>
<body>
<div id="contact-form">
<form method="post" action="form_process.php" method="POST" name="pdf-download">
<div class="podrecieved">
<h3>Recieved by<h3>
</div>
<div class="form-group col-xs-12">
<label for="firstname">Name:</label>
<input type="text" class="form-control" id="name" name="name" placeholder="John Doe">
</div>
<div class="form-group col-xs-12">
<label for="email_id">Email address:</label>
<input type="email_id" class="form-control" id="email" name="email" placeholder="john@company.com">
</div>
<div>
<label for="messages">
<span class="required">Additional Comments:</span>
<textarea id="messages" name="messages" placeholder="Please write your thougths here." tabindex="5"></textarea>
</label>
</div>
<div class="container">
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-sm-12">
<h3>Click to sign</h3>
<input type="text" id="txt" name="signature" style="border-radius: 5px;">
</div>
</div>
</div>
</div>
</div>
<div id="editor"></div>
<button name="submit" type="submit" id="submit">Submit</button>
<p class="form-message"></p>
</form>
</div>
</body>
</html>
$(文档).ready(函数){
$(“表格”)。提交(功能(事件){
event.preventDefault();
变量名称=$(“名称”).val();
var email=$(“email”).val();
var signature=$(“signature”).val();
$(“.form message”).load(“form_process.php”{
姓名:姓名,,
电邮:电邮,,
签名:签名
});
});
});
收到
姓名:
电邮地址:
补充意见:
点击签署
提交
form_process.php
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$signature = $_POST['signature'];
$message = $_POST['messages'];
$company = $_POST['company'];
$ErrorEmpty = false;
$ErrorEmail = false;
if (empty($name) || empty($email) || empty($signature)){
echo "<span class='form-error'>Please fill in required fields</span>";
$ErrorEmpty = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "<span class='form-error'>Please fill in a valid email address</span>";
$ErrorEmail = true;
}
else {
echo "<span class='form-success'>Please fill in a valid email address</span>";
}
}
else{
echo "There was an Error!";
}
$mailto = "contact@email.co.uk";
$headers = "from:".$company;
$txt = "Your Proof of delivery was signed for by:".$name;
mail($mailto, $headers, $txt );
header("location: index.php?POD_sent");
?>
<script>
$("#name, #email, #txt").removeClass(input-error);
var ErrorEmpty = "<?php echo $ErrorEmpty; ?>";
var ErrorEmail = "<?php echo $ErrorEmail; ?>";
if(ErrorEmpty == true) {
$("#name, #email, #txt").addClass("input-error");
}
if(ErrorEmail == true) {
$("#email").addClass("input-error");
}
if(ErrorEmpty == false && ErrorEmail == false) {
$("#name, #email, #txt").val("")
}
</script>
尝试以下操作:包括您自己的验证和流程:
Your form_process.php
您是否想过要从代码中删除
,而表单\u进程将返回json?在json执行上,您可以做一些奇特的事情,比如html制作。保持简单,让http错误代码来指示失败的成功。@Dimitrisdesylas我想自己验证而不是依赖HTML标准验证的原因是因为签名字段,我的理解是,标准HTML验证不包括签名字段?@dimitrisdesyllas我尝试删除``但它阻止了添加php表单fom。在此之前,包含了表单_process.php。我可以在页面顶部看出它有错误-有错误
这让我觉得form_process.php
sheetRemoveaction=“form_process.php”
这就是加载页面并添加ajax来完成post请求,然后您可以根据响应更改表单消息内容。我的意思是通过ja进行验证,然后通过javascript以及$.ajax
发送数据。结果将是json或html,并通过javascript更改您的页面。谢谢您的回答。我已经把代码改成了这个,我得到了同样的结果。我不知道为什么。PHP应该验证表单,然后发送表单,但“提交”按钮充当指向website.com/form_process.PHP的链接。我的提交按钮有错误吗?