php表单操作到不同的页面,然后返回ajax调用不起作用
情况是这样的: 在第一个php页面上,我有一个简单的表单,其中有一个到php类的操作,该类处理表单验证,然后在电子邮件中发送表单值。根据发送电子邮件或表单验证的成功或失败,我在初始表单页面上显示自定义消息 我对表单使用ajax调用;我遇到的问题是,当我第一次进入表单页面并单击submit按钮时,页面刷新不是异步调用,但第二次可以正常工作;这意味着没有页面刷新 下面是ajax调用代码;我正在使用PHP7和最新的Jquery(3.2.1)php表单操作到不同的页面,然后返回ajax调用不起作用,php,ajax,Php,Ajax,情况是这样的: 在第一个php页面上,我有一个简单的表单,其中有一个到php类的操作,该类处理表单验证,然后在电子邮件中发送表单值。根据发送电子邮件或表单验证的成功或失败,我在初始表单页面上显示自定义消息 我对表单使用ajax调用;我遇到的问题是,当我第一次进入表单页面并单击submit按钮时,页面刷新不是异步调用,但第二次可以正常工作;这意味着没有页面刷新 下面是ajax调用代码;我正在使用PHP7和最新的Jquery(3.2.1) /*----------------------------
/*----------------------------------------------------*/
/*联系方式
------------------------------------------------------*/
$('form[name=contactForm]')。提交(函数(e){
e、 预防默认值();
var hidden=$(“#baseurl”);
var baseUrl=hidden.val();
//AJAX请求
$.ajax({
url:this.action,
类型:this.method,
数据:$(this).serialize(),
beforeSend:函数()
{
$('.image loader').show();
},
成功:功能(数据)
{
var Result=$.trim(data.toLowerCase();
$(“#消息警告”).hide();
$('.image loader').hide();//隐藏加载消息
如果(结果=“确定”)
{
$(“#消息成功”).show();
$(“#消息成功”).stop().fadeOut(6000,“线性”);
}否则
{
$(“#消息成功”).hide();
$('#消息警告').css({'display':'block'});
如果(结果!==“”)
{
$('#消息警告').html(结果);
}否则
{
$(“#消息警告”).html(您的电子邮件尚未发送。如果此问题再次出现,请发送电子邮件至massimo@mywaydigitalhealth.co.uk.”;
}
$(“#消息警告”).show();
//$(“#消息警告”).stop().fadeOut(10000,“线性”);
}
window.location=baseUrl;
返回false;
},
错误:函数()
{
//TODO log ERRORSHORN.responseText,其中包含错误消息和堆栈跟踪
$('.image loader').hide();//隐藏加载消息
$(“#消息成功”).hide();
$('#消息警告').css({'display':'block'});
//$('#message warning').html(errorshown.responseText);
$(“#消息警告”).html(“尝试发送您的消息时出错。我们对给您带来的不便深表歉意。\n\如果此问题再次出现,请发送电子邮件至massimo@mywaydigitalhealth.co.uk.);
$(“#消息警告”).show();
//$(“#消息警告”).stop().fadeOut(10000,“线性”);
window.location=baseUrl;
返回false;
},
});
});
==============================================HTML
<form name="contactForm" id="contactForm" method="post" action="inc/sendEmail.php">
<fieldset>
<div class="row">
<div class="six columns mob-whole">
<label for="contactFname">First Name <span class="required">*</span></label>
<input name="contactFname" type="text" id="contactFname" placeholder="First Name" />
</div>
<div class="six columns mob-whole">
<label for="contactLname">Last Name <span class="required">*</span></label>
<input name="contactLname" type="text" id="contactLname" placeholder="Last Name" />
</div>
</div>
<div class="row">
<div class="six columns mob-whole">
<label for="contactEmail">Email <span class="required">*</span></label>
<input name="contactEmail" type="text" id="contactEmail" placeholder="Email" />
</div>
<div class="six columns mob-whole">
<label for="contactSubject">Subject</label>
<input name="contactSubject" type="text" id="contactSubject" placeholder="Subject" />
</div>
</div>
<div class="row"> <div class="twelve columns">
<label for="contactMessage">Message <span class="required">*</span></label>
<textarea name="contactMessage" id="contactMessage" placeholder="Your Message" rows="10" cols="50" ></textarea>
</div>
</div>
<div>
<input type="submit" value="Send Message" class="submit full-width" />
</div>
</fieldset>
</form> <!-- /contactForm -->
名字*
姓*
电子邮件*
主题
信息*
=====================================PHP类
<?php
include_once('../config.php');
include_once ('../lib/SwiftMailer/swift_required.php');
if ($_POST)
{
$referer = $_SERVER['HTTP_REFERER'];
$referer .= "#contact";
$FormValidated;
$SwiftMsg;
$IsLocal;
$response = "";
$transport;
$mailer;
$SendFormTo = "xxxxxxxxxxxxxxxxxxxxx";
$SendFormToName = "xxxxxxxxxxx";
$fname;
$lname;
$email;
$subject;
$messageText;
$BodyEMail;
$fname = trim(stripslashes($_POST['contactFname']));
$lname = trim(stripslashes($_POST['contactLname']));
$email = trim(stripslashes($_POST['contactEmail']));
$subject = trim(stripslashes($_POST['contactSubject']));
$messageText = trim(stripslashes($_POST['contactMessage']));
$validator = new FormValidators();
//required
$validator->addValidation("contactFname", "req", "Please fill in your name");
$validator->addValidation("contactLname", "req", "Please fill in your surname");
$validator->addValidation("contactEmail", "req", "Please fill in your Email");
$validator->addValidation("contactSubject", "req", "Please fill in the subject");
$validator->addValidation("contactMessage", "req", "Please fill in your email");
//only alphabet, numbers and spaces allowed
$validator->addValidation("contactFname", "alnum_s", "Please enter only alphanumeric characters fill in your name");
$validator->addValidation("contactLname", "alnum_s", "Please enter only alphanumeric characters in your surname");
$validator->addValidation("contactSubject", "alnum_s", "Please enter only alphanumeric characters in the subject");
//len
$validator->addValidation("contactFname", "minlen=2", "Please enter a name longer than 2 characters");
$validator->addValidation("contactLname", "minlen=2", "Please enter a surname longer than 2 characters");
$validator->addValidation("contactSubject", "minlen=2", "Please enter a subject longer than 2 characters");
$validator->addValidation("contactMessage", "minlen=15", "Please enter a message longer than 15 characters");
//format
$validator->addValidation("contactEmail", "email", "Please enter a valid email address");
$FormValidated = $validator->ValidateForm();
if ($FormValidated)
{
// Set Name
$name = $fname . " " . $lname;
//concatenate the email body message
$BodyEMail = "<h1>MyWay Digital health enquiry form</h1>";
$BodyEMail .= "<p>Enquiry sent from: <strong>" . $name . "</strong></p>";
$BodyEMail .= "<p>Subject: <strong>" . $subject . "</strong></p>";
$BodyEMail .= "<h2>Message</h2>";
$BodyEMail .= "<p>" . $messageText . "</p>";
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('xxxxxx', 465, 'ssl')
->setUsername('xxxxxxxxxxxxxx')
->setPassword('xxxxxxxxxx');
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$SwiftMsg = Swift_Message::newInstance();
$IsLocal = is_localhost();
if ($IsLocal)
{
$SwiftMsg->setFrom(array('xxxxxxxxxx' => 'MyWay Digital Health'));
}
else
{
$SwiftMsg->setFrom(array('xxxxxxxxxx' => 'MyWay Digital Health'));
}
$SwiftMsg->setSubject($subject);
$SwiftMsg->setFrom(array('xxxxxxxxxxxx' => 'MyWay Digital Health'));
$SwiftMsg->setTo(array($SendFormTo => $SendFormToName));
$SwiftMsg->setBody($BodyEMail, 'text/html');
// Send the message
$response = $mailer->send($SwiftMsg);
if ($response == 1)
{
$response = 'OK';
}
} # end if - no validation error
else
{
$error_hash = $validator->GetErrors();
foreach ($error_hash as $inpname => $inp_err)
{
$response .= "<p>$inp_err</p>";
}
} # end if - there was a validation error
echo $response;
}
?>
对不起,我不明白是什么问题。因此,首先单击,页面刷新。第二个继续工作好吗?请将html部分显示为是,首先单击,页面刷新。第二,继续工作。我添加了html和php代码不知道为什么,但通过注释out window.location=baseUrl并返回false;它起作用了。但是怎么做呢?如果没有代码,如何进行重定向?
<?php
include_once('../config.php');
include_once ('../lib/SwiftMailer/swift_required.php');
if ($_POST)
{
$referer = $_SERVER['HTTP_REFERER'];
$referer .= "#contact";
$FormValidated;
$SwiftMsg;
$IsLocal;
$response = "";
$transport;
$mailer;
$SendFormTo = "xxxxxxxxxxxxxxxxxxxxx";
$SendFormToName = "xxxxxxxxxxx";
$fname;
$lname;
$email;
$subject;
$messageText;
$BodyEMail;
$fname = trim(stripslashes($_POST['contactFname']));
$lname = trim(stripslashes($_POST['contactLname']));
$email = trim(stripslashes($_POST['contactEmail']));
$subject = trim(stripslashes($_POST['contactSubject']));
$messageText = trim(stripslashes($_POST['contactMessage']));
$validator = new FormValidators();
//required
$validator->addValidation("contactFname", "req", "Please fill in your name");
$validator->addValidation("contactLname", "req", "Please fill in your surname");
$validator->addValidation("contactEmail", "req", "Please fill in your Email");
$validator->addValidation("contactSubject", "req", "Please fill in the subject");
$validator->addValidation("contactMessage", "req", "Please fill in your email");
//only alphabet, numbers and spaces allowed
$validator->addValidation("contactFname", "alnum_s", "Please enter only alphanumeric characters fill in your name");
$validator->addValidation("contactLname", "alnum_s", "Please enter only alphanumeric characters in your surname");
$validator->addValidation("contactSubject", "alnum_s", "Please enter only alphanumeric characters in the subject");
//len
$validator->addValidation("contactFname", "minlen=2", "Please enter a name longer than 2 characters");
$validator->addValidation("contactLname", "minlen=2", "Please enter a surname longer than 2 characters");
$validator->addValidation("contactSubject", "minlen=2", "Please enter a subject longer than 2 characters");
$validator->addValidation("contactMessage", "minlen=15", "Please enter a message longer than 15 characters");
//format
$validator->addValidation("contactEmail", "email", "Please enter a valid email address");
$FormValidated = $validator->ValidateForm();
if ($FormValidated)
{
// Set Name
$name = $fname . " " . $lname;
//concatenate the email body message
$BodyEMail = "<h1>MyWay Digital health enquiry form</h1>";
$BodyEMail .= "<p>Enquiry sent from: <strong>" . $name . "</strong></p>";
$BodyEMail .= "<p>Subject: <strong>" . $subject . "</strong></p>";
$BodyEMail .= "<h2>Message</h2>";
$BodyEMail .= "<p>" . $messageText . "</p>";
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('xxxxxx', 465, 'ssl')
->setUsername('xxxxxxxxxxxxxx')
->setPassword('xxxxxxxxxx');
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$SwiftMsg = Swift_Message::newInstance();
$IsLocal = is_localhost();
if ($IsLocal)
{
$SwiftMsg->setFrom(array('xxxxxxxxxx' => 'MyWay Digital Health'));
}
else
{
$SwiftMsg->setFrom(array('xxxxxxxxxx' => 'MyWay Digital Health'));
}
$SwiftMsg->setSubject($subject);
$SwiftMsg->setFrom(array('xxxxxxxxxxxx' => 'MyWay Digital Health'));
$SwiftMsg->setTo(array($SendFormTo => $SendFormToName));
$SwiftMsg->setBody($BodyEMail, 'text/html');
// Send the message
$response = $mailer->send($SwiftMsg);
if ($response == 1)
{
$response = 'OK';
}
} # end if - no validation error
else
{
$error_hash = $validator->GetErrors();
foreach ($error_hash as $inpname => $inp_err)
{
$response .= "<p>$inp_err</p>";
}
} # end if - there was a validation error
echo $response;
}
?>