【问题标题】:maintain function order in jQuery ajax callback function在jQuery ajax回调函数中维护函数顺序
【发布时间】:2025-12-28 12:55:12
【问题描述】:

我有一个 jQuery ajax 函数。回调函数由两个函数组成:

1) 获取 ajax 结果(这是一个 html 表单)并将其作为 html span 的内部 html 插入。 2) 提交此表格

如何确保在 JavaScript 尝试提交表单之前加载表单?

代码:

$("select").live("change", function(){
  FormUpdate();
})

function FormUpdate() {

  $.ajax({
  type: "POST",
  url: "index.php?UpdateForm=Yes",
  data: $("#Form").serialize(),
  success: function(msg){
    $("span#Content").html(msg);
    $("#Form").submit();
  }
  });

}

我的问题来了,因为 javascript 尝试在表单加载和我的数据提交之前提交表单。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    只需简单的将获取ajax结果并插入DOM的函数放在前面,表单提交函数放在后面。

    只有在插入完成后,才会调用下一个函数。

    例子:

    $.ajax({
       type: "POST",
       url: "backend.php",
       data: "name=John",
       dataType: "json"
       success: function(msg){
         $("#thediv").html(msg.html);
         $("form#theform").submit();
       }
     });
    

    【讨论】:

    • 如果回调函数是同步的,我想我的代码还有另一个问题
    【解决方案2】:

    DOM 操作是同步的,所以表单直到之后才会提交。您对这种情况有特定的问题吗?如果是这样,请发布大量代码:)

    【讨论】:

    • 对,如果你看不到它的发生(它会很快变亮:P),你可以尝试将 $('#Form').submit() 调用放入 timeout() 函数中