【发布时间】:2013-06-10 10:32:37
【问题描述】:
我想使用 AJAX 来确定我是否可以接受表单的值(这不是表单验证)。 AJAX result 将确定表单是否提交。
下面,您将看到我在提交表单时执行 AJAX 调用,具体取决于返回的内容(可接受的空白或不可接受的错误消息),我想 return true;或return false;$("form").submit。
我怀疑我的问题出在 AJAX 的 success: 上。请帮助我将 result 从 AJAX 调用中取出,以便我可以执行 if (result == "") { return true; } else { return false; } 之类的操作。
工作:
$("form").submit(function(e) {
e.preventDefault();
var form = this;
var tray = $('select[name=tray_id]').val();
$.ajax({
type: "POST",
url: "modules/reserve-check.php",
data: {tray_id: tray},
cache: false
}).done(function(result) {
if (result == "")
form.submit();
else
alert(result);
}).fail(function() {
alert('ERROR');
});
});
原文:
$("form").submit(function() {
var tray = $('select[name=tray_id]').val();
$.ajax({
type: "POST",
url: "modules/reserve-check.php",
data: {tray_id: tray},
cache: false,
success: function(result) {
alert(result);
},
error: function(result) {
alert(result); //This works as expected (blank if acceptable and error msg if not acceptable)
}
});
/*
if (result == "")
return true;
else
return false;
*/
return false; //this is here for debugging, just to stop the form submission
});
【问题讨论】:
-
为什么不通过 AJAX 调用将整个表单提交给服务器,让服务器决定什么是可接受的。然后你可以让服务器返回一个成功或错误代码,你可以采取相应的行动
-
只能从同步代码中返回,Ajax 是异步的。阅读上面的帖子并使用回调。
-
更进一步 Mike W 所说,如果你确实通过 Ajax 进行了提交前的可接受性测试,你真的需要在你提交的 PHP 代码中重复测试,以防用户禁用了 JS或以其他方式设法绕过您的提交处理程序。
标签: javascript jquery ajax forms