使用JavaScript在页面完全加载后执行代码

使用JavaScript在页面完全加载后执行代码,javascript,jquery,ajax,Javascript,Jquery,Ajax,我花了几个小时试图让下面的代码正常工作。 应暂停代码,直到加载页面。我遇到的问题是AJAX是异步执行的。如何强制代码在执行之前等待 var i = 1; function On_Success(){ i = i+1; if(i<=10){ $('<div id="p'+i+'">b</div>').replaceAll('#b'); $('#p'+i).load('tabelle.html'); //here shoul

我花了几个小时试图让下面的代码正常工作。 应暂停代码,直到加载页面。我遇到的问题是AJAX是异步执行的。如何强制代码在执行之前等待

var i = 1;
function On_Success(){

    i = i+1;
    if(i<=10){

    $('<div id="p'+i+'">b</div>').replaceAll('#b'); 
    $('#p'+i).load('tabelle.html');
    //here shoul be waited, til the page is loaded
    On_Success();
    };
    };

    function knopf(){
    $('body').append('<div id="p'+i+'">a</div>');
    $('#p'+i).load('tabelle.html'); 
    On_Success();
    };
var i=1;
_Success()上的函数{
i=i+1;
如果(i接受加载完成时运行的回调,则可以使用此函数而不是更详细的函数,这将需要编写额外的代码来填充元素

jQuery("#p", i).load("tabelle.html", function() {   
   //code to run when tabelle.html has finished loading
});
将代码更改为以下内容。它应该可以工作:

var i = 1;

function On_Success() {

    i = i + 1;
    if (i <= 10) {
        $('<div id="p' + i + '">b</div>').replaceAll('#b');
        $('#p' + i).load('tabelle.html', On_Success);        
    };
};

function knopf() {
    $('body').append('<div id="p' + i + '">a</div>');
    $('#p' + i).load('tabelle.html', On_Success);
};
var i=1;
_Success()上的函数{
i=i+1;
如果(i接受加载完成时运行的回调,则可以使用此函数而不是更详细的函数,这将需要编写额外的代码来填充元素

jQuery("#p", i).load("tabelle.html", function() {   
   //code to run when tabelle.html has finished loading
});
将代码更改为以下内容。它应该可以工作:

var i = 1;

function On_Success() {

    i = i + 1;
    if (i <= 10) {
        $('<div id="p' + i + '">b</div>').replaceAll('#b');
        $('#p' + i).load('tabelle.html', On_Success);        
    };
};

function knopf() {
    $('body').append('<div id="p' + i + '">a</div>');
    $('#p' + i).load('tabelle.html', On_Success);
};
var i=1;
_Success()上的函数{
i=i+1;

if(iAjax和load都有一个on
successs
函数,当响应完全返回时可以运行该函数

$.ajax({
        async: true,
        type: "GET",
        url: url,
        data: params,
        success: function(html){
                 //do stuff here
                 },
        error: handleAjaxErrors

    });
如果要使用load,还存在一个成功回调:

$("#myDiv").load('/ajax/data/get', function() {
  //do stuff here
});

Ajax和load都有一个on
successs
函数,当响应完全返回时可以运行该函数

$.ajax({
        async: true,
        type: "GET",
        url: url,
        data: params,
        success: function(html){
                 //do stuff here
                 },
        error: handleAjaxErrors

    });
如果要使用load,还存在一个成功回调:

$("#myDiv").load('/ajax/data/get', function() {
  //do stuff here
});

加载函数有一个成功处理程序:

$('#p'+i).load('tabelle.html', function() {
  On_Success();
});
成功处理程序仅在ajax调用成功完成后,以及在提供的内容添加到DOM中后调用

您可以在此处查看完整的文档:


如果还希望捕获客户端上的错误条件,则需要根据@Chris的回答使用完整的
$.ajax
调用。

加载函数有一个成功处理程序:

$('#p'+i).load('tabelle.html', function() {
  On_Success();
});
成功处理程序仅在ajax调用成功完成后,以及在提供的内容添加到DOM中后调用

您可以在此处查看完整的文档:


如果您还想捕获客户端上的错误条件,您需要根据@Chris的回答使用完整的
$.ajax
调用。

最初的问题是“页面加载”,而不是加载函数。我编辑了我的答案。我仍然遇到同样的问题,代码继续运行,没有等待,现在它工作了,我已经删除了“()”在On_Success调用之后,你知道为什么吗?@nadeshcda原因是
load
接受回调。当你在
On_Success
之后添加
()
时,它实际上调用了函数。你想做的是传递一个引用,这就是当你省略
()
时你正在做的事情。最初的问题是“页面加载”不是为了加载函数。我已经编辑了我的答案。我仍然遇到同样的问题,代码继续运行,没有等待现在它工作了,我在on_成功调用后删除了“()”,你知道为什么吗?@nadeshcda原因是
load
接受回调。当你添加
()
在_Success
上的
之后,它实际上调用了该函数。您要做的是传递一个引用,这就是您在忽略
()
时所做的。