php 判断页面加载完,所有ajax执行完且页面加载完判断

jquery ajax&load 方法导致 js效果不显示或显示后由于加载后ajax 重新布局页面导致效果错误。

解决思路:需要在ajax get post 或 load 等执行完后再去执行方法就不会由于他们没执行完导致的最终错误。

那么首先看load 方法定义:jQuery ajax - load() 方法

jQuery Ajax 参考手册

实例

使用 AJAX 请求来改变 p 元素的文本:

$("button").click(function(){

$("p").load('demo_ajax_load.txt');

});

亲自试一试

您可以在页面底部找到更多 TIY 实例

定义和用法

load() 方法通过 AJAX 请求从服务器加载数据,并把返回的数据放置到指定的元素中。

注释:还存在一个名为 load 的 jQuery 事件方法。调用哪个,取决于参数。

语法

load(url,data,function(response,status,xhr))

参数 描述

url 规定要将请求发送到哪个 URL。

data 可选。规定连同请求发送到服务器的数据。

function(response,status,xhr)

可选。规定当请求完成时运行的函数。

额外的参数:

response - 包含来自请求的结果数据

status - 包含请求的状态("success", "notmodified", "error", "timeout" 或 "parsererror")

xhr - 包含 XMLHttpRequest 对象

详细说明

该方法是最简单的从服务器获取数据的方法。它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当侦测到成功的响应时(比如,当 textStatus 为 "success" 或 "notmodified" 时),.load() 将匹配元素的 HTML 内容设置为返回的数据。这意味着该方法的大多数使用会非常简单:

$("#result").load("ajax/test.html");

如果提供回调函数,则会在执行 post-processing 之后执行该函数:

$("#result").load("ajax/test.html", function() {

alert("Load was performed.");

});

上面的两个例子中,如果当前文档不包含 "result" ID,则不会执行 .load() 方法。

如果提供的数据是对象,则使用 POST 方法;否则使用 GET 方法。

加载页面片段

.load() 方法,与 $.get() 不同,允许我们规定要插入的远程文档的某个部分。这一点是通过 url 参数的特殊语法实现的。如果该字符串中包含一个或多个空格,紧接第一个空格的字符串则是决定所加载内容的 jQuery 选择器。

我们可以修改上面的例子,这样就可以使用所获得文档的某部分:

$("#result").load("ajax/test.html #container");

如果执行该方法,则会取回 ajax/test.html 的内容,不过然后,jQuery 会解析被返回的文档,来查找带有容器 ID 的元素。该元素,连同其内容,会被插入带有结果 ID 的元素中,所取回文档的其余部分会被丢弃。

jQuery 使用浏览器的 .innerHTML 属性来解析被取回的文档,并把它插入当前文档。在此过程中,浏览器常会从文档中过滤掉元素,比如 ,

或 元素。结果是,由 .load() 取回的元素可能与由浏览器直接取回的文档不完全相同。

注释:由于浏览器安全方面的限制,大多数 "Ajax" 请求遵守同源策略;请求无法从不同的域、子域或协议成功地取回数据。

更多实例

例子 1

加载 feeds.html 文件内容:

$("#feeds").load("feeds.html");

例子 2

与上面的实例类似,但是以 POST 形式发送附加参数并在成功时显示信息:

$("#feeds").load("feeds.php", {limit: 25}, function(){

alert("The last 25 entries in the feed have been loaded");

});

例子 3

加载文章侧边栏导航部分至一个无序列表:

HTML 代码:

jQuery Links:

jQuery 代码:

$("#links").load("/Main_Page #p-Getting-Started li");

发现有个回调方法,那好啊 ,我在回调中写自己的方法就会在ajax之后执行了。于是乎:$("#feeds").load("feeds.php", function(){

fun();

});

但是有个问题,如果是多个呢? 每个后面都加?而且还要判断此方法是否被执行过了。(。。。。。。。。。。)

于是乎:找个jquery自带的判断所有结束后再去执行就OK了,于是:$("p").ajaxStop(function(){

if (hash && !isGlobalHash) {

$("#MfTit"+hash).trigger("click");

isGlobalHash = true;

}

});

定义:

实例

当所有 AJAX 请求完成时,触发一个提示框:$("p").ajaxStop(function(){

alert("所有 AJAX 请求已完成");

});

当然 有 stop 就有 start.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值