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

如何正确使用div刷新?点击提交后div清空无返回数据问题求解

问题根因与修复方案

存在的问题

  • 异步执行顺序错误:$.ajax是异步操作,你当前把load()写在ajax请求外部,会导致插入请求刚发出、还没等数据库写入完成就提前执行了div刷新,此时数据库还没有新数据,自然无法加载到最新内容。
  • HTML结构不规范:<tbody>标签只能作为<table>的直接子元素使用,你当前直接把tbody放在div下,浏览器渲染时会自动剔除无效的tbody结构,导致$("#id_data")匹配不到对应元素,load返回的内容无法正确插入。
  • POST请求参数写法错误:POST请求的参数不应该拼接在URL中,应该放在ajax的data字段里传递,避免特殊字符转义、长度限制等问题。
  • 事件对象未正确接收:点击回调函数没有声明接收event参数,部分浏览器下event.preventDefault()会执行失败,可能触发页面默认提交刷新,影响内容加载。

修复代码

1. 修正HTML结构

<div class="listTable">
  <!-- 新增table标签包裹tbody,符合DOM规范 -->
  <table>
    <tbody id="id_data">
                        
    </tbody>
  </table>
</div>

2. 修正JS逻辑

$('#submitBtm').on('click', onSubmit = (event) => { // 声明接收event参数
  // 提前阻止默认行为,避免页面意外跳转
  event.preventDefault();

  const first_nameV = document.getElementById("first_name").value;
  const last_nameV = document.getElementById("last_name").value;
  const emailV = document.getElementById("email").value;
  const departmentV = document.getElementById("department").value;
        
  $.ajax({
    type: "POST",
    url: "companydirectory/libs/php/insertAll.php",
    // POST参数统一放到data字段传递
    data: {
      first_name: first_nameV,
      last_name: last_nameV,
      email: emailV,
      departmentID: departmentV
    },
    success: function(data) {
      // 插入数据库成功后再执行刷新,保证能拿到最新数据
      $("#id_data").load(location.href + " #id_data");
    },
    error:  function(request,error) {
      console.log(request)                                   
    }
  })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:03