表单提交由ajax捕获并导致无限循环

时间:2015-05-08 09:12:44

标签: jquery ajax forms

我在ajax和html表单中有一个问题,我需要你的帮助。

我正在使用PARSLEY验证(http://parsleyjs.org/)来验证规则。但问题是验证不支持数据库验证:对于即时,我必须检查字段'nom'是否已存在于数据库中或否,如果存在(显示消息)并且如果不存在则提交表单到myaction.php。

我的ajax脚本:

<script>
$(document).ready(function () {
    $("form").submit(function (e) {
        e.preventDefault(); //prevent default form submit
        var nom = $("#nom").val();
        $.ajax({
            type: "POST",
            url: 'ajax.php',
            data:  "field="+ nom ,
            success: function (data) {
                if(data==1){
                    alert(data);
                }else if(data==0){
                    cache: false
                    $('form#form_id').submit();
                }
            },
        });
    });
});
</script>

我的HTML格式:

<form action="myaction.php" method="post" name="form_name" id="form_id">
    <input type="text" id="nom" name="nom" required value="">
    <input type="text" id="prenom" name="prenom" required value="">
    <input type="text" id="remarque" name="remarque" required value="">
</form>

ajax.php:如果数据库中不存在字段则返回0,如果存在,则返回1

我面临的问题是ajax在循环中调用。在每次提交表单并调用ajax时。我想要的是如果数据等于0(数据库中不存在字段),表单必须提交给myaction.php

1 个答案:

答案 0 :(得分:0)

这是一个解决方案。

基本上,您将永远提交和处理该项目。在验证数据后,您需要打破它。由于您只关心nom,因此请在其上设置一些标记,以便您可以在提交时进行检查

$(document).ready(function () {
    $("form").submit(function (e) {
        var nom = $('#nom');
        var valid = nom.data('valid');

        if (valid === 0) { // Is valid, let's continue
          return;
        } else { // Valid is undefined as was never set
          e.preventDefault(); //prevent default form submit

          $.ajax({
              type: "POST",
              url: 'ajax.php',
              data:  "field="+ nom.val() ,
              success: function (data) {                
                  if(data==1) {
                      alert(data);
                  } else if(data==0) {
                    nom.data('valid', 0);
                  }
              }
          });
        }                
    });
});