我想使用AJAX来确定表单的值是否可以接受(这不是表单验证)。 AJAX result
将确定表单是否已提交。
下面,您将看到我在提交表单时执行AJAX调用并根据返回的内容(可接受的空白或不可接受的错误消息),我喜欢致return true;
或return false;
$("form").submit
。
我怀疑我在AJAX的success:
中遇到了麻烦。请帮助我从AJAX调用中获取result
,以便我可以执行if (result == "") { return true; } else { return false; }
之类的操作。
WORKING:
$("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');
});
});
ORIGINAL:
$("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
});
答案 0 :(得分:18)
由于ajax调用是异步的,您必须阻止表单提交,然后在返回结果时,检查它是否与条件匹配并使用本机提交处理程序提交表单,避免{{1}在jQuery事件处理程序中:
preventDefault()
答案 1 :(得分:1)
使用e.preventDefault();
阻止表单提交,然后使用this.submit()
(不调用jQuery .submit()
触发器函数,而是调用本机<form> .submit()
函数)提交表格。
$("form").submit(function(e) {
e.preventDefault();
var tray = $('select[name=tray_id]').val();
var form = this;
$.ajax({
type: "POST",
url: "modules/reserve-check.php",
data: {tray_id: tray},
cache: false,
complete : function(result){callback(result, form)}
});
});
var callback = function(result, form){
if(!result)
form.submit();
};