在jQueryAjax中发布后,如何知道页面何时完全加载了引用

在jQueryAjax中发布后,如何知道页面何时完全加载了引用,ajax,jquery,Ajax,Jquery,当我提交表单时,我使用下面的命令来获取整个页面,现在页面在调用CSS和JavaScript时需要时间加载。 在任何人再次使用之前,我需要显示数据仍在该页面中加载。 我想使用加载模式弹出窗口,一旦页面完全加载,我将关闭弹出窗口 我怎样才能做到这一点 $.ajax({ type: "POST", url: $url, data: "post=" + post, // data: form_data, success: function(data)

当我提交表单时,我使用下面的命令来获取整个页面,现在页面在调用CSS和JavaScript时需要时间加载。
在任何人再次使用之前,我需要显示数据仍在该页面中加载。 我想使用加载模式弹出窗口,一旦页面完全加载,我将关闭弹出窗口 我怎样才能做到这一点

$.ajax({  
    type: "POST",
    url:  $url,
    data: "post=" +  post,
    //   data: form_data,
    success: function(data) {
        if(data!=""){
            $('body').html(data);
            ...
附加数据:


我有两个窗框。在右侧框架中,我的页面有链接,单击链接后,将在隐藏字段中发布某些数据,并获得包含更改数据的整个右侧页面。现在我的右侧页面有如下链接

<link rel="Stylesheet" href="abc.css" type="text/css" />
<script src="jquery-1.6.3.min.js"></script>

<link href="jquery-ui.css" rel="stylesheet" type="text/css"/>    


一旦页面被$('body').html(数据)加载,从服务器检索这些文件需要时间;我希望加载这些文件,然后让用户执行其工作

因为您正在将
加载
应用于整个
主体
元素,在此之前的任何模式弹出显示都将被删除,以备新内容使用

因此,我建议首先使用
$.get()

这意味着您可以在此过程中显示加载图标,然后将内容加载到
正文
,这将删除加载图标:

//show modal popup here    
$.get($url, "post=" + post, function(data){
    var content;
    content = data;
    if (content!=null){
       $("body").html(content);
     }
});

我的语法可能不太正确,因为我无法测试这一点,但它应该能让您了解工作的逻辑。

使用ajaxStart和ajaxEnd显示加载消息

$("#myjaxloader").bind("ajaxStart", function(){
    $(this).show();
}).bind("ajaxStop", function(){
    $(this).hide();
});
在myajaxloader中添加消息和图像


如果需要更多的阻塞功能,可以使用。

需要使用加载帧的onload事件。如果两个帧位于同一个域上,则可以执行以下操作:

$(form).on('submit', function(e) {
    e.preventDefault();  // to stop the page from reloading
    $.ajax({  
        type: "POST",
        url:  $url,
        data: "post=" +  post,  //use form.serialize to send the whole form
        beforeSend: function () {
            $(modal).show();
        }
    }).done(function(data) {
        if(data!=""){ $('body').html(data); }
    )).always(function() {
        $(modal).hide();
    });
});
导航窗口:

$.post(url, data).then(
    function() { // success handler
        window.errorTimer = setTimeout(showErrorPopup, 10);
    }, function() { // error handler
        showErrorPopup();
    }
);
showLoadingPopup();
内容窗口:

$(function() { // runs after everything is loaded
    window.top.otherFrame.clearTimeout(window.top.otherFrame.errorTimer);
    window.top.otherFrame.hideLoadingPopup.call(window.top.otherFrame);
});

问题是整个页面被再次加载,所以一旦返回post数据,模式就会自动关闭,页面开始加载。我认为您需要更好地解释这一点。你是在提交表单,重新加载页面,并期望在页面自行重新加载时显示模式吗?我在一个窗口中有两个框架。在右侧框架中,我的页面有链接,单击链接后,将在隐藏字段中发布某些数据,并获得包含更改数据的整个右侧页面。现在,我的右侧页面有一些链接,例如,一旦页面被$('body').html(数据)加载,这些文件需要时间才能从服务器检索到@Curt-在$.get的异步特性下如何工作?if语句是否总是错误的,因为执行if语句时不会加载内容?事实上,由于变量是在顶部定义的,它是否会为null?@adeneo Good point!我做了另一个改进,使所有代码都在
$的回调函数中。get
我已经尝试过了,问题是ajax完成了,但是头部链接的js文件仍然要从服务器中取出,所以ajaxstop在加载我的所有文件之前就已经存在了
$(function() { // runs after everything is loaded
    window.top.otherFrame.clearTimeout(window.top.otherFrame.errorTimer);
    window.top.otherFrame.hideLoadingPopup.call(window.top.otherFrame);
});