Javascript 允许在php jquery中ajax调用成功后提交表单操作 $(文档).ready(函数(){ $(“#formId”).submit(函数(事件){ 警报(“调用了.submit()的处理程序”); var数据=$(“#txtDriverpassword”).val(); var data1=$(“#driverId”).val(); $.ajax({ 键入:“获取”, url:“page.php”, 数据:{“数据”:数据,“数据1”:数据1,“方法”:“验证密码”}, 成功:功能(结果){ 如果(结果=“有效”){ //警报(“有效凭证…”); 返回true; } 否则{ 警报(“无效凭证”); 返回false; } }, 错误:函数(XMLHttpRequest、textStatus、errorshown){ //警报(“状态:+textStatus”);警报(“错误:+ERRORSHORN”); $(“#成功消息”).html(textStatus); } }); //event.preventDefault(); }); });

Javascript 允许在php jquery中ajax调用成功后提交表单操作 $(文档).ready(函数(){ $(“#formId”).submit(函数(事件){ 警报(“调用了.submit()的处理程序”); var数据=$(“#txtDriverpassword”).val(); var data1=$(“#driverId”).val(); $.ajax({ 键入:“获取”, url:“page.php”, 数据:{“数据”:数据,“数据1”:数据1,“方法”:“验证密码”}, 成功:功能(结果){ 如果(结果=“有效”){ //警报(“有效凭证…”); 返回true; } 否则{ 警报(“无效凭证”); 返回false; } }, 错误:函数(XMLHttpRequest、textStatus、errorshown){ //警报(“状态:+textStatus”);警报(“错误:+ERRORSHORN”); $(“#成功消息”).html(textStatus); } }); //event.preventDefault(); }); });,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,在表单中,我有一个带有动态数据的表,并使用foreach对其进行验证。现在,对于单个输入验证,我只使用了一个ajax调用——如果ajax调用成功,那么表单需要提交。插入查询写在同一页中。我能知道怎么解决吗?防止默认是可行的,但是在ajax成功调用中删除默认事件是不可行的 如何解决?因为ajax调用是异步的,所以必须阻止第一次表单提交,然后在验证为真时进行新表单提交。 我还没有尝试过,但这应该可以工作(注意我引入的lock变量): $(文档).ready(函数(){ var-lock=false

在表单中,我有一个带有动态数据的表,并使用
foreach
对其进行验证。现在,对于单个输入验证,我只使用了一个ajax调用——如果ajax调用成功,那么表单需要提交。插入查询写在同一页中。我能知道怎么解决吗?防止默认是可行的,但是在ajax成功调用中删除默认事件是不可行的


如何解决?

因为ajax调用是异步的,所以必须阻止第一次表单提交,然后在验证为真时进行新表单提交。 我还没有尝试过,但这应该可以工作(注意我引入的lock变量):


$(文档).ready(函数(){
var-lock=false;
$(“#formId”).submit(函数(事件){
如果(!锁定){
警报(“调用了.submit()的处理程序”);
var driverPassword=$(“#txtDriverpassword”).val();
var driverId=$(“#driverId”).val();
$.ajax({
键入:“获取”,
url:“page.php”,
数据:{“数据”:数据,“数据1”:数据AA,“方法”:“验证密码”},
成功:功能(结果){
如果(结果=“有效”){
//警报(“有效凭证…”);
$(“#formId”).submit();
}
否则{
警报(“无效凭证”);
}
lock=true;
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
//警报(“状态:+textStatus”);警报(“错误:+ERRORSHORN”);
$(“#成功消息”).html(textStatus);
}
});
event.preventDefault();
}
});
});

开始时定义一个新变量bHasValidated并将其设置为false

<script>
 $(document).ready(function () {
        var lock = false;
        $("#formId").submit(function (event) {
            if(!lock) {
                alert("Handler for .submit() called.");
                var driverPassword = $("#txtDriverpassword").val();
                var driverId = $("#driverId").val();

                $.ajax({
                    type: "GET",
                    url: "page.php",
                    data: {"data": data, "data1": dataaa, "method": "verifypassword"},
                    success: function (result) {

                        if (result === "valid") {
                            // alert('valid credentials....');
                            $("#formId").submit();
                        }
                        else {
                            alert("invalid credentials");

                        }
                        lock = true;
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        //  alert("Status: " + textStatus); alert("Error: " + errorThrown); 
                        $("#successMessage").html(textStatus);
                    }
                });
                event.preventDefault();
            }
        });
    });
<script>
然后在成功处理程序上,将变量设置为true并提交工作

  var bHasValidated = false;
  $("#formId").submit(function (event) {
     if( bHasValidated ) return true;

     // --- the AJAX code here ----

     //event.preventDefault(); remove preventDefault
     return bHasValidated;
  });
希望它能起作用:)

  var bHasValidated = false;
  $("#formId").submit(function (event) {
     if( bHasValidated ) return true;

     // --- the AJAX code here ----

     //event.preventDefault(); remove preventDefault
     return bHasValidated;
  });
success: function (result) {
    if (result === "valid") {
       bHasValidated = true;
       $('#formid').submit();
    }
}