我想使用AJAX来确定表单的值对我来说是否可以接受(这不是表单验证)。AJAX result将确定是否提交表单。
result
下面,你会看到,当表单提交并根据返回什么我执行一个AJAX调用(无论是空白这是可以接受的,或者这是不能接受的错误信息),我想return true;还是return false;在$("form").submit。
return true;
return false;
$("form").submit
我怀疑我的麻烦在于AJAX的success:。请帮助我摆脱resultAJAX呼叫,以便我可以执行类似的操作if (result == "") { return true; } else { return false; }。
success:
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调用是异步的,因此必须阻止表单提交,然后在返回结果时,检查其是否符合条件,并使用本机提交处理程序提交表单,避免preventDefault()使用jQuery事件处理程序:
preventDefault()
$("form").submit(function(e) { e.preventDefault(); var self = this, 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 == "") self.submit(); }).fail(function() { alert('error'); }); });