1

我有一个 ajax 函数,显然默认情况下是异步的。但我在向导的第一步中就有了这个功能。所以当函数执行时,目的是保存一些东西,保存后返回最后插入行的ID。一切正常。

但是我面临的问题是这是在向导的下一步按钮中执行的,因此 ajax 调用是异步的,步骤显然跳到了下一步。但是服务器端功能仍然在后台执行。所以在第二步中,我需要在第一步中生成的 ID。但是如果用户立即单击第二页上的下一步按钮,则不会获得 ID,因为该进程仍在服务器端运行。当然,我可以通过验证第二页来覆盖它。但除了我需要在启动第一页 ajax 调用后等待或延迟。这意味着当用户单击第一页的下一个按钮时,我需要 2-3 秒的延迟,但在启动 Ajax 请求之后。

怎样才能使它工作?

 My AJAX call
 Delay of 5 seconds
 Only then wizard should step ahead
4

1 回答 1

0

您需要使用在 ajax 调用完成后运行的回调函数

$.get("/get/something/", function(data) {
    // now you can do your thing when
    // ajax call have finished
    // in data variable you have the response from the server

    // if you need more time
    setTimeout(function () { 
         // this code will execute after half a second
    }, 500); 
})

评论澄清后编辑:

如果您不需要执行第 1 步的数据,您应该直接跳到下一步,让该过程在后台进行。只是让用户知道。

$("#infopanel").html("Processing...");
$.get("/get/something/", function(data) {
    $("#infopanel").html("Ready!");
})

如果您仍想等待 5 秒再继续:

    setTimeout(function () { 
         MoveToNextStep();
    }, 5000); 
于 2014-03-13T13:55:55.350 回答