所以我有一个联系人字段,在提交时发送电子邮件,我希望在完成后提供javascript警报,但是我回复了问题。
javascript:
jQuery(document).ready(function() {
$.ajax({
url: './contactengine.php',
type: 'GET',
dataType: 'JSON',
success: function(response) {
alert("GOOD");
},
error: function() {
alert("BAD");
}
});
});
php:
<?php
$EmailFrom = "emailname@gmail.com";
$EmailTo = "emailto@gmail.com";
$Subject = "new contact from website";
$Name = Trim(stripslashes($_POST['Name']));
$company = Trim(stripslashes($_POST['company']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));
// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}
// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "company: ";
$Body .= $company;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
// redirect to success page
if ($success)
{
$result = array('success' => true);
}
else
{
$result = array('success' => false, 'message' => 'Something happened');
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
}
echo json_encode($result);
?>
当我提交表单时,我会被重定向到一个页面,其中包含以下内容:
{"success":true}
当我应该停留在同一页面上时,只是提醒你。
答案 0 :(得分:2)
这里的问题出现在你的脚本中我认为,从你描述的行为来看,这听起来就像你的PHP正在做的那样。
我已经根据PHP代码对ajax调用进行了一些更正,试试看它是否有帮助。
$.ajax({
url: 'contactengine.php', //removed ./ - that's wrong I think
type: 'POST', //you are accessing $_POST not $_GET in the PHP file
data: $('myform').serialize(), //you need to send some data atleast
dataType: 'JSON',
success: function(response) {
alert("GOOD");
},
error: function() {
alert("BAD");
}
});
我已完成的操作已从您网址的前面删除./
- 它应该是空的,/
用于根目录,或../
用于一个目录。当前目录。如果文件与您的页面位于同一目录中,请保持原样。
我已经将类型从GET更改为POST - 您正在访问脚本中的PHP $ _POST全局,因此PHP一直在寻找变量的错误位置。
最后但并非最不重要的是,我已经放入了一些data
。您需要传递PHP期望的那些变量 - 所以我使用了serialize()
调用。替换jQuery选择器,使其以您的表单为目标,并将表单中的所有内容传递给PHP。
有关jQuery ajax函数的更多详细信息,请参阅此处:http://api.jquery.com/jQuery.ajax/
希望这有帮助
答案 1 :(得分:0)
Plus您将请求类型定义为GET,但也将其作为POST读取。在里面发送这样的数据,并将请求类型更改为发布
$.ajax({
url: './contactengine.php',
type: 'POST',
data: { variable1: "value1", .... }
dataType: 'JSON',
success: function(response) {
alert("GOOD");
},
error: function() {
alert("BAD");
}
});
答案 2 :(得分:0)
调用ajax函数的代码是否附加到表单上的按钮?听起来你在ajax调用之后正在做一个常规的非ajax表单提交。您可以尝试更改运行ajax请求的onsubmit或onclick函数返回false,我认为应该修复它。