根据第一个结果调用另一个jquery / AJAX / php请求失败

时间:2013-07-02 05:38:05

标签: php jquery ajax

我有一个带验证码的联系我们表格。我提交按钮点击我需要使用第一个AJAX请求执行服务器端验证码验证,如果成功,那么我调用第二个AJAX / Jquery / php发送联系我们的邮件。

但是第一次AJAX调用是成功的,但是第二次调用是没有调用..请帮助我...

<form
id="RegisterUserForm"
name="RegisterUserForm"
action=""
onsubmit="return submitform();"
method="post">
    <fieldset
    style="border: 0;">
        <table
        width="100%">
            <tr>
                <td
                width="150">
                    <div
                    class="celebrationContent">
                        Name:</div>
                        </td>
                        <td
                        class="style1">
                            <input
                            id="Name"
                            type="text"
                            name="Name"
                            style="border-style: none; background-color: #fffcc4;
                        width: 275px;"
                            />
                            </td>
            </tr>
            <tr>
                <td>
                    <div
                    class="celebrationContent">
                        E-mail
                        id:</div>
                </td>
                <td
                class="style1">
                    <input
                    id="email"
                    type="text"
                    name="email"
                    style="border-style: none; background-color: #fffcc4;
                        width: 274px;"
                    />
                    </td>
            </tr>
            <tr>
                <td
                class="celebrationContent">
                    Phone
                    Number:
                    </td>
                    <td
                    class="style1">
                        <input
                        id="phonenumber"
                        type="text"
                        name="phonenumber"
                        style="border-style: none;
                        background-color: #fffcc4; width: 274px;"
                        />
                        </td>
            </tr>
            <tr>
                <td
                class="celebrationContent">
                    Your
                    Celebration:
                    </td>
                    <td
                    class="style1">
                        <input
                        id="yourCelebration"
                        type="text"
                        name="yourCelebration"
                        style="border-style: none;
                        background-color: #fffcc4; width: 274px; height: auto;"
                        />
                        </td>
            </tr>
            <tr>
                <td
                class="celebrationContent">
                    When
                    is
                    it:
                    </td>
                    <td
                    class="style1">
                        <input
                        type="text"
                        name="datepicker"
                        id="datepicker"
                        style="border-style: none; background-color: #fffcc4;
                        width: 272px;"
                        />
                        </td>
            </tr>
            <tr>
                <td
                class="celebrationContent">
                    Enquiry:
                    </td>
                    <td
                    class="style1">
                        <input
                        type="text"
                        id="Enquiry"
                        name="Enquiry"
                        style="border-style: none; background-color: #fffcc4;
                        width: 272px; height: 70px;"
                        />
                        </td>
            </tr>
            <tr>
                <td
                colspan="2"
                align="left"
                class="celebrationContent">
                    Verification
                    Code
                    </td>
            </tr>
            <tr>
                <td
                align="left"
                colspan="2">
                    <table
                    width="100%">
                        <tr>
                            <td
                            width="32%">
                                <img
                                src="captcha.php"
                                alt="celebration captcha"
                                />
                                </td>
                                <td>
                                    <input
                                    type="text"
                                    id="verificationcode"
                                    name="verificationcode"
                                    style="border-style: none;
                                    background-color: #fffcc4"
                                    />
                                </td>
                        </tr>
                        </table>
                        </td>
            </tr>
            <tr>
                <td
                colspan="2"
                align="center">
                    <input
                    type="submit"
                    id="form_submit"
                    />
                    </td>
            </tr>
            </table>
            </fieldset>
            </form>

jquery代码是

<script type="text/javascript">
        $(function () {
            $('#datepicker').datepicker('option', 'dateFormat', 'dd-mm-yy');            
        });

        $("#datepicker").datepicker({
            minDate: 0
        });

    function submitform() {

        if (validateCaptach()) {
            var sData = $("#RegisterUserForm").serialize();
             alert('i am here to process..');  
            $.ajax({
                type: "POST",
                url: "thankyou.php",
                data: sData,
                //async: false,
                success: function (data) {
                    if (data == "YESSUCCESS") {
                        alert("Your Query has been sent..");
                       return true;
                    } else {
                        alert("some error please type again...");
                        return false; 
                    }
                }
            });
        }
        return false;
    }

    function validateCaptach() {
        if (validateForm()) {
            var captchaval = $("#verificationcode").val();
            $.ajax({
                type: "POST",
                url: "captchacheck.php",
                async: false,
                data: {
                    verificationcode: captchaval
                },
                success: function (data) {
                    if (data == "SUCCESS") {
                        alert("captchacheck success..");
                        return true;
                    } else {
                        alert("The security code you typed was wrong. Please try again.");
                        return false;
                    }
                }
            });
        }
    }

    function validateForm() {

        if (document.RegisterUserForm.Name.value == "") {
            alert("Please provide your name!");
            document.RegisterUserForm.Name.focus();
            return false;
        }

        if (document.RegisterUserForm.email.value == "") {
            var emailID = document.RegisterUserForm.email.value;
            atpos = emailID.indexOf("@");
            dotpos = emailID.lastIndexOf(".");
            if (atpos < 1 || (dotpos - atpos < 2)) {
                alert("Please enter correct email ID")
                document.RegisterUserForm.email.focus();
                return false;
            }
        }

        if ((document.RegisterUserForm.phonenumber.value == "") || isNaN(document.RegisterUserForm.phonenumber.value)) {
            alert("Please enter your phone Number");
            document.RegisterUserForm.phonenumber.focus();
            return false;
        }
        if (document.RegisterUserForm.yourCelebration.value == "") {
            alert("Please enter your Celebration!");
            document.RegisterUserForm.yourCelebration.focus();
            return false;
        }
        if (document.RegisterUserForm.datepicker.value == "") {
            alert("Please select date !");
            document.RegisterUserForm.datepicker.focus();
            return false;
        }
        if (document.RegisterUserForm.Enquiry.value == "") {
            alert("Please Enter your enquiry!");
            document.RegisterUserForm.Enquiry.focus();
            return false;
        }
        if (document.RegisterUserForm.verificationcode.value == "") {
            alert("Please enter the Verificationcode!");
            document.RegisterUserForm.verificationcode.focus();
            return false;
        }
        return (true);
    }    

    </script>   

4 个答案:

答案 0 :(得分:1)

您没有从validateCaptach返回值。来自success事件的返回值不会像处理代码那样返回到调用函数。所以为了让你获得所需的输出。您必须在success来电的ajax事件中拨打第二个电话。

例如

  .....
  success: function(e) {
      callSecondFunction();
  }

这将是最好的方法。

答案 1 :(得分:1)

你没有从validateCaptach()返回任何内容。您从AJAX回调函数返回truefalse,但这些值不会去任何地方。

function validateCaptach() {
    if (validateForm()) {
        var captchaval = $("#verificationcode").val();
        var success;
        $.ajax({
            type: "POST",
            url: "captchacheck.php",
            async: false,
            data: {
                verificationcode: captchaval
            },
            success: function (data) {
                if (data == "SUCCESS") {
                    alert("captchacheck success..");
                    success = true;
                } else {
                    alert("The security code you typed was wrong. Please try again.");
                    success = false;
                }
            }
        });
        return success;
    }
}

答案 2 :(得分:0)

我无法理解你为什么要使用两个AJAX请求。这没有意义。

您可以在单个AJAX调用中验证所有内容。请进行验证码检查和表格提交 captchacheck.php

答案 3 :(得分:0)

在处理异步调用时,函数validateCaptcha在ajax调用完成之前完成。在第一次ajax调用成功返回后,您需要发送第二个ajax调用。

<script type="text/javascript">
$(function(){
    $('#datepicker').datepicker('option', 'dateFormat', 'dd-mm-yy');            
});

$("#datepicker").datepicker({
    minDate: 0
});

function submitform () {
    /**
     * Pass the second ajax call as a function
     */
    validateCaptcha(function(){
        var sData = $("#RegisterUserForm").serialize();
        alert('i am here to process..');  

        $.ajax({
            type: "POST",
            url: "thankyou.php",
            data: sData,
            //async: false,
            success: function (data) {
                if (data == "YESSUCCESS") {
                    alert("Your Query has been sent..");
                   return true;
                }
                else {
                    alert("some error please type again...");
                    return false; 
                }
            }
        });
    });

    return false;
}

function validateCaptcha (action) {
    if (validateForm()) {
        var captchaval = $("#verificationcode").val();

        $.ajax({
            type: "POST",
            url: "captchacheck.php",
            async: false,
            data: {
                verificationcode: captchaval
            },
            success: function (data) {
                if (data == "SUCCESS") {
                    alert("captchacheck success..");

                    if (typeof action == "function") {
                        action();
                    }

                    return true;
                }
                else {
                    alert("The security code you typed was wrong. Please try again.");
                    return false;
                }
            }
        });
    }
}

function validateForm () {
    if ($("#RegisterUserForm [name=Name]").val() == "") {
        alert("Please provide your name!");
        $("#RegisterUserForm [name=Name]").focus();
        return false;
    }

    if ($("#RegisterUserForm [name=email]").val() == "") {
        var emailID = $("#RegisterUserForm [name=email]").val();
        atpos = emailID.indexOf("@");
        dotpos = emailID.lastIndexOf(".");

        if (atpos < 1 || (dotpos - atpos < 2)) {
            alert("Please enter correct email ID")
            $("#RegisterUserForm [name=email]").focus();

            return false;
        }
    }

    if (($("#RegisterUserForm [name=phonenumber]").val() == "") || isNaN($("#RegisterUserForm [name=phonenumber]").val())) {
        alert("Please enter your phone Number");
        $("#RegisterUserForm [name=phonenumber]").focus();

        return false;
    }

    if ($("#RegisterUserForm [name=yourCelebration]").val() == "") {
        alert("Please enter your Celebration!");
        $("#RegisterUserForm [name=yourCelebration]").focus();

        return false;
    }

    if ($("#RegisterUserForm [name=datepicker]").val() == "") {
        alert("Please select date !");
        $("#RegisterUserForm [name=datepicker]").focus();

        return false;
    }

    if ($("#RegisterUserForm [name=Enquiry]").val() == "") {
        alert("Please Enter your enquiry!");
        $("#RegisterUserForm [name=Enquiry]").focus();

        return false;
    }

    if ($("#RegisterUserForm [name=verificationcode]").val() == "") {
        alert("Please enter the Verificationcode!");
        $("#RegisterUserForm [name=verificationcode]").focus();

        return false;
    }

    return true;
}
</script>