POST完成后运行代码,并在jQuery中加载页面?

时间:2016-05-10 07:13:42

标签: javascript jquery ajax jquery-deferred

我有这段代码:

$.when($.post(...)).then(function () {
  ...
});

我希望与$(document).ready(...);结合使用,以便在页面初始化时启动请求,.then函数内的所有内容都在页面和POST请求完成加载时运行。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

jQuery将为DOM加载时产生一个承诺。因此,您可以使用$.when()等待两个承诺。因此,您可以这样做:

$.when($.post(...), jQuery.ready.promise()).then(function(result) {
    // code here
    // result[0] is ajax result
});

这样您就可以立即启动ajax调用,但只有在页面准备好后才能处理结果。

答案 1 :(得分:0)

我只是想出来了。

显然$(document).ready(function () { })并不只是设置一个事件处理程序,但如果页面已经加载,也会立即运行代码。所以现在我只是使用它:

$.post(...).then(function () {
  $(document).ready(function () {
    ...
  });
});

这允许仅在POST请求完成且页面加载完毕后才运行代码。

答案 2 :(得分:-1)

你可以设置一些时间间隔,如

setTimeout(function(){ //do something here }, 3000);

.then内或检查您网页中的某些div是否存在于

$('#someDiv') !== null