/**********************
User clicks on an album
**********************/
var $curr;
$(document).on('click', 'div#albumlist>a', function(ev) {
ev.preventDefault();
$.get('albums.php?aid='+$albumid).done(showThumbs()); // Set the session album ID and refresh thumbnails
});
/**********************
AJAX Thumbnails
**********************/
function showThumbs() {
$.ajax({
url: 'thumbs.php',
type: 'post',
success: function(output) {
document.getElementById("content").innerHTML="<p class='panellabel'>album name</p><div class='panelline'></div>"+output;
},
error: function (xhr, ajaxOptions, thrownError) {
document.getElementById("content").innerHTML="<p class='panellabel'>album name</p><div class='panelline'></div>" +
"ERROR " + xhr.status + ": " + thrownError;
}
});
}
我正在尝试创建一个用户点击相册,会话变量&#34;援助&#34;更新,然后调用showThumbs()以显示容器中所选相册中的照片。
我最初有:
$.get('albums.php?aid='+$albumid);
showThumbs();
但这产生了相同的结果。
在查看网络流量后,似乎在设置会话变量之前将showThumbs()称为。这种情况是间歇性的。有没有办法强制AJAX调用等到$ .get在showThumbs()执行之前完成?
感谢。 :)
答案 0 :(得分:2)
将函数引用传递给.done()
,如下所示(函数名后面没有parens):
$.get('albums.php?aid='+$albumid).done(showThumbs);
当您()
像showThumbs()
那样立即执行它时,而不是只传递一个稍后可以调用的函数引用。
答案 1 :(得分:2)
当你传递回调时,不要调用,只需传递实现。改为:
$.get('albums.php?aid='+$albumid).done(showThumbs);
或
$.get('albums.php?aid='+$albumid).done(function () {showThumbs()});
但第二个看起来很傻。