如何在设置会话变量后调用AJAX函数?

时间:2014-05-24 01:52:04

标签: jquery ajax

/**********************
    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()执行之前完成?

感谢。 :)

2 个答案:

答案 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()});

但第二个看起来很傻。