Javascript ajax调用和表单提交后PHP Mailer脚本未完成
我试图在使用AJAX提交表单之后调用php脚本。PHP脚本被调用,但除此之外什么也没有发生,没有收到电子邮件,没有错误消息,等等。但如果PHP文件是通过URL直接访问的,并且success属性正确执行表单重置,它将重定向到主页。蒂亚 HTML: PHP:*编辑:删除了用于测试目的的验证,但仍然无法工作Javascript ajax调用和表单提交后PHP Mailer脚本未完成,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我试图在使用AJAX提交表单之后调用php脚本。PHP脚本被调用,但除此之外什么也没有发生,没有收到电子邮件,没有错误消息,等等。但如果PHP文件是通过URL直接访问的,并且success属性正确执行表单重置,它将重定向到主页。蒂亚 HTML: PHP:*编辑:删除了用于测试目的的验证,但仍然无法工作 <?php $webmaster_email = "feedback@myDomain.com"; $index = "http://mydomain.com"; $email_addres
<?php
$webmaster_email = "feedback@myDomain.com";
$index = "http://mydomain.com";
$email_address = $_POST['email'];
$comments = $_POST['comment'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
echo "$email_address";
echo "$comments";
echo "$fname";
echo "$lname";
/*function isInjected($str) {
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str)) {
return true;
}
else {
return false;
}
}*/
if (!isset($_REQUEST['email'])) {
header("Location: $index");
exit;
}
elseif (empty($email_address) || empty($comments) || empty($fname)) {
echo "<script type=\"text/javascript\">alert('Please fill in the required fields.');</script>";
exit;
}
// If email injection is detected, redirect to the error page.
elseif (isInjected($email_address)){
echo "<script type=\"text/javascript\">alert('Please, Try Again.')";
exit;
}
// If we passed all previous tests, send the email then redirect to the thank you page.
else {
mail("$webmaster_email", "Feedback Form Results", $comments, "From: $email_address");
echo "<script type=\"text/javascript\">alert('Thank You for contacting us!')";
exit;
}
?>
看起来您正在提交表单并执行AJAX调用。你必须阻止表单发布,并且只使用AJAX调用。不,这只是一个按钮,你的表单正在提交检入控制台AJAX响应成功并显示你提交的记录。我已经修改了操作代码,AJAX调用成功了…我想问题出在php代码中…只是为了测试,去掉所有的验证代码我删除了验证代码,它没有改变任何东西。在我的服务器上是否需要更改该文件的任何权限?
$("#submit").on('click', function(){
var fileName = document.location.pathname.match(/[^/]+$/),
firstName = $('#first-name').val(),
lastName = $('#last-name').val(),
emailVal = $('#email').val(),
comments = $('#comment').val();
$.ajax({
type: 'POST',
url: '../script/mail.php',
data: {fname:firstName, lname:lastName, email:emailVal, comment:comments, fileName:fileName},
success: function(){
$('form').each(function() {
this.reset();
});
}
});
});
<?php
$webmaster_email = "feedback@myDomain.com";
$index = "http://mydomain.com";
$email_address = $_POST['email'];
$comments = $_POST['comment'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
echo "$email_address";
echo "$comments";
echo "$fname";
echo "$lname";
/*function isInjected($str) {
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str)) {
return true;
}
else {
return false;
}
}*/
if (!isset($_REQUEST['email'])) {
header("Location: $index");
exit;
}
elseif (empty($email_address) || empty($comments) || empty($fname)) {
echo "<script type=\"text/javascript\">alert('Please fill in the required fields.');</script>";
exit;
}
// If email injection is detected, redirect to the error page.
elseif (isInjected($email_address)){
echo "<script type=\"text/javascript\">alert('Please, Try Again.')";
exit;
}
// If we passed all previous tests, send the email then redirect to the thank you page.
else {
mail("$webmaster_email", "Feedback Form Results", $comments, "From: $email_address");
echo "<script type=\"text/javascript\">alert('Thank You for contacting us!')";
exit;
}
?>