2012-07-10 100 views
0

我已经通过PHP提交了我的表单,但我正在为AJAX挣扎。提交后,错误总是出现,好像res被设置为false而不是true。我尝试了代码周围,并寻找我自己的答案,因为我想学习,但我没有找到我所需要的。AJAX联系表 - 成功和失败信息

请允许我指出我正确的方向,我做了什么不当吗?

非常感谢你!

供您参考代码:

$('#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"); 
      } 
     } 
    }); 

}); 

回答

0

尝试问:

if(res == true) 

代替。同时,为了避免这种问题的好方法是通过萤火虫或铬调试器来调试您的JavaScript,如果你使用的是Chrome,可以将这个行添加到您的代码:

debugger; 
if(res == "true") 

和JavaScript将停止有这么你可以检查变量,看看发生了什么。你可以打开它的选项 - >工具 - >开发人员工具 - >脚本“。

希望这有助于:)

+0

非常感谢! – 2012-07-10 19:09:45

+0

没问题,欢迎来到:) – Hassek 2012-07-10 19:11:07

0

看来,贵的道理比较是由于res代表的值返回false。您正在检查以确保它是一个值为“true”的字符串。如果不是,则触发其他代码。

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

成功(数据,textStatus,jqXHR)

函数。如果请求成功被调用。该函数获得三个参数: 参数:从服务器返回的数据,根据 格式化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"); 
    } 
} 
+0

非常感谢您! – 2012-07-10 19:09:53

+0

不客气。让我知道你是否需要额外的协助/解释这个问题。 – RobB 2012-07-10 19:15:21

0

在你send_email.php文件,回声 “成功”,如果它成功。

然后修改您的AJAX调用就像这样:

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