我有一个我正在调用的函数验证重新验证,然后根据验证是否成功验证,发送一封电子邮件。我正在使用jquery .ajax函数验证recaptcha,并且在成功验证后使用另一个jquery .ajax函数来发送电子邮件。
这是javascript:
function validateCaptcha(){
var isValid = $('#es_contact_form').valid();
var esform = $('#es_contact_form').serialize();
var html = $.ajax({
type: "POST",
url: "scripts/ajax.recaptcha.php",
data: esform,
async: false
}).responseText;
if(isValid)
{
if(html == "success")
{
//alert("Captcha and form are valid");
//return true;
var esform2 = $('#es_contact_form').serialize();
var response = $.ajax({
type: "POST",
url: "scripts/ajax.email.php",
data: esform2,
async: false
}).responseText2;
if(response=="success")
{
alert('mail successfully sent');
return true;
}else{
alert('mail not sent, please try again');
Recaptcha.reload();
return false;
}
}
else
{
alert('Form valid, captcha bogus');
$("#captchaStatus").html("Your captcha is incorrect. Please try again");
Recaptcha.reload();
return false;
}
}else{
if(html == "success")
{
//alert("Captcha's good, but the form aint!");
Recaptcha.reload();
return false;
}
else
{
//alert('Form invalid, captcha bogus...can you do anything right?');
$("#captchaStatus").html("Your captcha is incorrect. Please try again");
Recaptcha.reload();
return false;
}
}
}
以下是我收到500服务器错误的脚本的服务器端代码:
<?php
$yourName = 'ES';
$yourEmail = 'rob@domain.com';
$yourSubject = 'ES: contact form';
$referringPage = 'es.domain.com';
function cleanPosUrl ($str) {
$nStr = $str;
$nStr = str_replace("**am**","&",$nStr);
$nStr = str_replace("**pl**","+",$nStr);
$nStr = str_replace("**eq**","=",$nStr);
return stripslashes($nStr);
}
if ( isset($_POST) ) {
$to = $yourEmail;
$subject = $yourSubject;
$message = cleanPosUrl($_POST['name'])."\r\n\n";
$message .= cleanPosUrl($_POST['remail'])."\r\n\n";
$message .= cleanPosUrl($_POST['phone'])."\r\n\n";
$message .= cleanPosUrl($_POST['comments']);
$headers = "From: ".cleanPosUrl($_POST['name'])." <".cleanPosUrl($_POST['remail']).">\r\n";
$headers .= 'To: '.$yourName.' <'.$yourEmail.'>'."\r\n";
$mailit = mail($to,$subject,$message,$headers);
}
if ( $mailit )
{ ?>success<? }
else
{ die ("The mail wasn't sent"); }
}
?>
ajax.recaptcha.php和ajax.email.php都会从帖子中拉出来,如果成功则会返回“成功”。
ajax.recaptcha.php工作正常。但当它到达ajax.email.php脚本时,我在Firebug中不断收到500服务器错误。
有没有人知道为什么一个人会工作而不是另一个?这些脚本都在同一台服务器上的同一个文件夹中,所以我看不出为什么这不起作用。
非常感谢任何帮助。
由于
答案 0 :(得分:0)
在你的php脚本中,
尝试var_dum($ _ POST)你的条件,你检查参数,可能导致错误,
看看你在var_dump之后看到的消息,如果你发现任何问题,那么用 $ _ GET 或 $ _ REQUEST
改变你的状况答案 1 :(得分:0)
代码中有一个额外的}你应该在
后立即摆脱}$mailit = mail($to,$subject,$message,$headers);
我完全同意jugnu,为了在这种情况下更好的调试,你应该尝试使用静态值来发送电子邮件。 (而不是POST [])。