AJAX联系表 - 成功和失败消息

时间:2012-07-10 19:03:54

标签: javascript ajax

我已经通过PHP提交表单,但我在使用AJAX时遇到了一些麻烦。提交后,错误总是出现,就好像res被设置为false而不是true。我已经尝试了解代码并搜索我自己的答案,因为我想要学习,但我找不到我需要的东西。

请你指点我做错了什么?

非常感谢你!

供您参考的代码:

$('#contact_form').submit(function() {

    var this_form = $(this);
    $.ajax({
        type: 'post',
        data: this_form.serialize(),
        url: 'scripts/send_email.php',
        success: function(res) {
            if(res == "true") {
                $(this_form)[0].reset();
                $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast");
            } else {
                $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast");
            }
        }
    });

});

3 个答案:

答案 0 :(得分:0)

由于res代表的值,您的真相比较似乎正在返回false。您正在检查以确保它是值为“true”的字符串。如果没有,则触发其他代码。

只有在AJAX传输成功时才会执行success属性。您需要将比较检查设置为send_email.php的所需输出,即“成功!”或'失败!'表明正确处理。

  

成功(data,textStatus,jqXHR)

     

请求成功时要调用的函数。该函数传递了三个   arguments:从服务器返回的数据,格式为   dataType参数;描述状态的字符串;和jqXHR   (在jQuery 1.4.x,XMLHttpRequest中)对象。截至jQuery 1.5,   成功设置可以接受一系列功能。每个功能都会   被轮流打电话。

有关在jQuery中处理AJAX请求的其他信息,请参阅docs

success: function(res) {
    if (res == "Success!") {
        $(this_form)[0].reset();
        $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast");
    } else {
        $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast");
    }
}

答案 1 :(得分:0)

试着要求:

if(res == true)

代替。另外一个避免此类问题的好方法是通过firebug或chrome调试器调试你的javascript,如果你使用chrome,你可以将这行添加到你的代码中:

debugger;
if(res == "true")

并且javascript将停在那里,以便您可以检查变量并查看发生了什么。您可以通过转到“选项 - >工具 - >开发者工具 - >脚本”来打开它。

希望这会有所帮助:)

答案 2 :(得分:0)

在send_email.php文件中,如果成功,则回显“success”。

然后修改你的AJAX调用:

success: function(data) {
if (data == "success") {do stuff} else {do failure stuff}
}