【发布时间】:2019-05-26 23:00:58
【问题描述】:
目前我有一个使用 jQuery 加载的页面,如下所示:
$('#content').load('mypage.html');
这在site.js 内部调用。在加载的页面中,我加载了一个脚本,我试图从中返回一个异步结果,因此它不会冻结。
页面如下:
<div id="mycontent"></div>
<script type="text/javascript" src="js/getmycontent.js"></script>
<script type="text/javascript">
$(function() {
$('body').ajaxComplete(function() {
var ids = {
"h1": 123,
"h2": 12345
};
//$('.loader-wrapper').show();
// Iterate over id numbers
$.each(ids, function(k, v) {
var mylist;
var call = getMyList(v).done(function(r) {
if(r) {
mylist = r.mylist;
} else {
mylist = null;
}
}).fail(function(x) {
alert(x);
});
console.log(mylist);
});
//$('.loader-wrapper').hide();
});
});
</script>
这里是getmycontent.js:
function getMyList(id) {
var url = 'https://api.myurl.org/v1/lists/' + id;
return $.ajax({
url: url,
type: 'get',
dataType: 'json'
});
}
当我在 body 上使用 ajaxComplete 函数时,控制台不会记录任何内容,但我正在阅读,这就是有人建议我为动态加载的页面所做的事情。
当我删除 ajaxComplete 调用时,我在控制台中得到了这个:
send @ jquery.min.js:2
ajax @ jquery.min.js:2
w._evalUrl @ jquery.min.js:2
Re @ jquery.min.js:2
append @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
z @ jquery.min.js:2
html @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
u @ jquery.min.js:2
fireWith @ jquery.min.js:2
k @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
load (async)
send @ jquery.min.js:2
ajax @ jquery.min.js:2
w.fn.load @ jquery.min.js:2
(anonymous) @ site.js:20
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2
6VM400:34 undefined
这是来自控制台的 VM400:
$(function() {
$('body').ajaxComplete(function() {
var ids = {
"h1": 123,
"h2": 12345
};
//$('.loader-wrapper').show();
// Iterate over id numbers
$.each(ids, function(k, v) {
var mylist;
var call = getMyList(v).done(function(r) {
if(r) {
mylist = r.mylist;
} else {
mylist = null;
}
}).fail(function(x) {
alert(x);
});
console.log(mylist);
});
//$('.loader-wrapper').hide();
});
});
【问题讨论】:
标签: javascript jquery ajax asynchronous jquery-load