表单OnSubmit等待jQuery Ajax返回?

我想在表单onsubmit上触发$.ajax ,并且只有在Ajax返回有效之后才return true

例如:

 

在Javascript中:

 function ajaxValidation() { $.ajax({ async: false, type: "POST", url: "ajax.php", data: { myString: $("#myString").val() } }).success(function( response ) { alert(response); //Got 'ok' if (response=="ok") { return true; //mark-1 } else { alert("Oh, string is wrong. Form Submit is cancelled."); } }); return false; //mark-2 } 

当我提交时,我得到警报,但它返回’假’,因为它跳到最终return false线。

为什么? 我不明白。 实际上,应该return true线。 (并且,即使在return true ,函数应该停在那里并且刚刚退出)

所以现在意味着,父函数does NOT wait Ajax Return。 相反,它一直持续到最后。 请知道原因。 如何让父函数等待Ajax?

由于AJAX是异步的,因此使用提交按钮上的单击处理程序可以更好地validation。

以下是基于删除内联onSubmit

 $(function() { var $form = $('#myForm'); $form.find('input[type="submit"]').click(function() { $.ajax({ /* async: false, this is deprecated*/ type: "POST", url: "ajax.php", data: { myString: $("#myString").val() } }).success(function(response) { alert(response); //Got 'ok' if(response == "ok") { /* submit the form*/ $form.submit(); } else { alert("Oh, string is wrong. Form Submit is cancelled."); } }); /* prevent default when submit button clicked*/ return false; }); }); 

标记1处的返回值是您的ajax请求的成功函数,而不是您的validation函数。 因此,即使它返回,它也仅从那里返回而不是从标记2的validationfunction返回