既然您提到了爬网,我认为可能存在多个页面。下面从一组 url 加载页面,并将成功的加载存储到结果中。complete
它会在每次加载(在success
or之后调用)时递减剩余Urls(这对于更新进度条很有用error
),并且可以在处理完所有页面后调用方法(!remainingUrls)
。
如果这是矫枉过正,只需使用该$.ajax
部分并替换myUrls[i]
为video.html
. 我之所以选择type
唯一,是因为我遇到了另一个脚本将 ajax 的默认类型更改为 POST 的情况。如果您正在加载 php 或 aspx 之类的动态页面,那么cache
如果您要在每个会话中多次调用此属性,该属性也可能会有所帮助。
var myUrls = ['video1.html', 'video2.html', 'fail.html'],
results = [],
remainingUrls;
$(document).ready(function () {
remainingUrls = myUrls.length;
for (var i = 0, il = myUrls.length; i < il; i++) {
$.ajax({
url: myUrls[i],
type: 'get', // somebody might override ajax defaults
cache: 'false', // only if you're getting dynamic pages
success: function (data) {
console.log('success');
results.push(data);
},
error: function () {
console.log('fail');
},
complete: function() {
remainingUrls--;
if (!remainingUrls) {
// handle completed crawl
console.log('done');
}
}
});
}
});