使用延迟或队列将AJAX添加到.append(数据)


Getting AJAX to .append(data) with a delay or queue

因此,由于睡眠不足或纯粹的误解,我在获取一段jQuery代码时遇到了问题。

所以请社区你的我唯一的希望:p

我有一个jQuery函数,它在元素onClick="属性上执行

<div id="next" onClick="choice('next', '<? echo $page; ?>')"></div>

基本上,我试图实现的是:让一个元素淡出,然后通过AJAX调用PHP脚本,将相关数据和该数据抓取到前面讨论的先前隐藏的元素中,然后将所述元素淡出到焦点中。

我遇到的问题是,无论我做什么(使用.queuesetTimeout),或者只是使用jQuery中的标准"fx"队列,AJAX数据总是尽快加载,任何延迟的尝试都不起作用。

下面是代码,提前感谢您的任何帮助。

function choice(value, page) {
    var timer;
    $.get("http://<? echo ROOT; ?>includes/forms.php", { choice: value, page: page }, function(data) {
        clearTimeout(timer);
        $("#slideOut-inner").fadeOut(2000).empty();
        timer = setTimeout(show, 2200);
        function show() {
            $("#slideOut-inner").append(data).fadeIn(2000); 
        }
    });
}

在$.get的成功回调的外部设置延迟,否则只有当客户端收到来自服务器的响应时才会发生:

$("#slideOut-inner").fadeOut(2000, function() {
    $(this).empty();
    $.get("http://<? echo ROOT; ?>includes/forms.php", {
        choice: value,
        page: page
    }, function(data) {
        $("#slideOut-inner").append(data).fadeIn(2000);
    });
});

尝试将append()放入fadeOut():的回调中

$.get("http://<? echo ROOT; ?>includes/forms.php", { choice: value, page: page }, function(data) {
    $("#slideOut-inner").fadeOut(2000, function() {
        $(this).empty()
            .append(data).fadeIn(2000);
    }).empty();
});