视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
所有ajax执行完且页面加载完判断
2020-11-27 20:17:18 责编:小采
文档


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 属性来解析被取回的文档,并把它插入当前文档。在此过程中,浏览器常会从文档中过滤掉元素,比如 <html>, <title> 或 <head> 元素。结果是,由 .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 代码:

<b>jQuery Links:</b>
<ul id="links"></ul>

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.

下载本文
显示全文
专题