You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用preventDefault()后表单提交触发无限循环,请求技术协助

解决表单AJAX验证后无限循环提交的问题

嘿,我一眼就看出问题所在了——你遇到的无限循环,根源在于调用jQuery的form.submit()时,会再次触发你绑定在表单上的submit事件处理器,等于又走了一遍“阻止默认提交→发AJAX→验证通过再submit”的流程,这不就无限套娃了嘛!

问题分析

你给#search_form绑定了submit事件监听,每次表单提交(包括你在success回调里主动调用form.submit())都会触发这个监听,执行event.preventDefault()后发起AJAX,验证通过后又触发submit,循环往复停不下来。

两种可行的解决方案

方案1:使用原生DOM的submit方法(推荐)

jQuery的submit()会触发事件监听,但原生DOM元素的submit()方法不会——它会直接提交表单,跳过所有绑定的事件处理器。修改代码如下:

$(document).ready(function() { 
  $( "#search_form" ).on('submit',function(event) { 
    event.preventDefault(); 
    var form = $(this); 
    // 先确保host变量已正确获取(示例从表单对应输入框取值,可按需调整)
    var host = form.find('input[name="host"]').val();
    
    $.ajax({ 
      url: "ajax_validate.php", 
      type: 'POST', 
      data: {host: host}, 
      dataType: 'json', 
      success: function (data) { 
        if (data.status == 'ok'){
          // 调用原生DOM元素的submit方法,直接提交表单
          form[0].submit(); 
        } 
      },
      // 建议加上错误处理,避免AJAX失败后用户无感知
      error: function(xhr, status, error) {
        console.error('验证请求出错:', error);
        alert('验证失败,请稍后重试');
      }
    }); 
  }); 
});

方案2:解绑submit事件后再提交

如果更习惯用jQuery的方法,可以先解绑表单的submit事件监听,再提交表单:

$(document).ready(function() { 
  $( "#search_form" ).on('submit',function(event) { 
    event.preventDefault(); 
    var form = $(this); 
    var host = form.find('input[name="host"]').val();
    
    $.ajax({ 
      url: "ajax_validate.php", 
      type: 'POST', 
      data: {host: host}, 
      dataType: 'json', 
      success: function (data) { 
        if (data.status == 'ok'){
          // 先解绑submit事件,避免再次触发监听
          form.off('submit').submit(); 
        } 
      },
      error: function(xhr, status, error) {
        console.error('验证请求出错:', error);
        alert('验证失败,请稍后重试');
      }
    }); 
  }); 
});

额外提醒

别忘了确认host变量是正确获取到的——你原来的代码里直接用了host,如果这个变量没提前定义或者没从表单取值,AJAX请求会传空值,导致验证逻辑出错。我在上面的代码里加上了从表单输入框取值的示例,你可以根据实际情况调整。

内容的提问来源于stack exchange,提问作者Leo505

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:51:26