Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以onsubmit形式调用ajax函数_Javascript_Php_Jquery_Ajax_Formvalidation Plugin - Fatal编程技术网

Javascript 以onsubmit形式调用ajax函数

Javascript 以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()"&

我正在使用html表单并使用php提交,但在提交之前,我想使用ajax方法验证和检查响应,如果响应为true,则返回true,否则返回false,因此在检查响应之前,html表单不应提交,但不检查响应也会提交表单,即使我使用了return

<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
                    }
                }
            });
}