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