Javascript 以onsubmit形式调用ajax函数
我正在使用html表单并使用php提交,但在提交之前,我想使用ajax方法验证和检查响应,如果响应为true,则返回true,否则返回false,因此在检查响应之前,html表单不应提交,但不检查响应也会提交表单,即使我使用了returnJavascript 以onsubmit形式调用ajax函数,javascript,php,jquery,ajax,formvalidation-plugin,Javascript,Php,Jquery,Ajax,Formvalidation Plugin,我正在使用html表单并使用php提交,但在提交之前,我想使用ajax方法验证和检查响应,如果响应为true,则返回true,否则返回false,因此在检查响应之前,html表单不应提交,但不检查响应也会提交表单,即使我使用了return <form method="POST" action="<?= base_url('save_details/')?>" onsubmit="return validate()"&
<form method="POST" action="<?= base_url('save_details/')?>" onsubmit="return validate()">
<button type="submit">Add</button>
</form>
您遇到的第一个问题是需要阻止标准表单提交,以便您的逻辑在允许发送请求之前等待AJAX请求。为此,可以使用一个不引人注目的事件处理程序。理想情况下,应该始终在HTML中的内联on*
事件属性上使用这些属性,因为后者不再是好的做法
第二个问题是由于异步请求,您的return
语句实际上不会提供对validate()
调用的响应。您需要使用异步模式来允许请求完成并基于响应执行操作
最后,如果响应的状态符合您所需的规则,您可以发出AJAX请求并直接重新提交表单。试试这个:
我不能使用php方法使用表单提交,我不确定你的意思,因为上面答案中的逻辑模拟了问题中的代码,只是问题已经解决了。@Rory McCrossan我想使用onsubmit=“return validate()”仅处理,如果为true,则submit else返回false,但在检查之前,请刷新/提交。幸运的是,正如我在回答中所述,您不能。内联事件处理程序是一种错误的做法,您无法从异步调用返回响应。如果我使用异步:“false”,
function validate(){
$.ajax({
type: "POST",
url: "<?= base_url('validate_email') ?>",
data: {
email: email,
},
dataType: 'json',
success: function (response)
{
if (response.status) {
return true;
} else {
return false;
// some message
}
}
});
}