[英]Problems with multiple jquery .ajax function calls
我有一個正在調用的函數來驗證驗證碼,然后根據該函數是否成功驗證來發送電子郵件。 我正在使用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個服務器錯誤。
有誰知道為什么一個會起作用而不是另一個起作用? 這些腳本都在同一服務器上的同一文件夾中,所以我看不到為什么這不起作用。
任何幫助是極大的贊賞。
謝謝
在您的PHP腳本中,
如果您在檢查參數的情況下嘗試ur_dum($ _ POST),則可能會導致錯誤,
看到你在那個var_dump之后看到的東西,如果你看到任何問題,那就用$ _GET或$ _REQUEST改變你的條件
代碼中還有一個額外的}。您應該在之后刪除}
$mailit = mail($to,$subject,$message,$headers);
我完全同意jugnu,在這種情況下,為了進行更好的調試,您應該嘗試使用靜態值發送電子郵件。 (而不是POST [])。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.