使用延迟或队列获取AJAX到.append(数据)

时间:2012-01-11 11:46:11

标签: php jquery ajax get settimeout

因此,由于缺乏睡眠或纯粹的误解,我无法使用一段jQuery代码。

所以请将你唯一的希望归于社区:P

我有一个jQuery函数,它在onClick =“”属性

元素上执行
<div id="next" onClick="choice('next', '<? echo $page; ?>')"></div>

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

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

以下是代码,请提前感谢您的帮助。

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); 
        }
    });
}

2 个答案:

答案 0 :(得分:1)

设置$ .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);
    });
});

答案 1 :(得分:1)

尝试将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();
});