我已经通过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");
}
}
});
});
答案 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}
}