簡體   English   中英

多個jquery .ajax函數調用的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM