双jQuery延迟()的问题

双jQuery延迟()的问题,jquery,post,delay,Jquery,Post,Delay,我正在摆弄jQuery的AJAX功能,并试图模拟一台真正的服务器如何延迟我在本地主机上获得的平滑数据请求 因此,我编写了与此类似的代码: $('form').submit(function (event) { event.preventDefault(); $('#response').html('<p>Posting...</p>').fadeIn().delay(2000).queue(function () { $.post (

我正在摆弄jQuery的AJAX功能,并试图模拟一台真正的服务器如何延迟我在本地主机上获得的平滑数据请求

因此,我编写了与此类似的代码:

$('form').submit(function (event) {
    event.preventDefault();

$('#response').html('<p>Posting...</p>').fadeIn().delay(2000).queue(function () {
        $.post (
        'some_url.php', 
        {/*values here*/},
        function (response) {
            $('#response').html(response).delay(1000).fadeOut('slow');

            //The line below is to reset the form element
            $('input[type="text"], textarea').val(' ');
        });
    });
});
$('form')。提交(函数(事件){
event.preventDefault();
$('#response').html('Posting…

).fadeIn().delay(2000).queue(函数(){ 美元邮政( “some_url.php”, {/*此处的值*/}, 功能(响应){ $('#response').html(response).delay(1000).fadeOut('slow'); //下一行用于重置表单元素 $('input[type=“text”],textarea').val(“”); }); }); });
我在这里主要做的是将$.post方法延迟2秒,以便可以看到“Posting…”消息。 当2sec完成时,我希望文本与我得到的响应一起更改,保持静止1秒钟,并希望它淡出

第一个延迟工作得很好,Ajax调用也工作得很好,问题是——出于某种原因,第二个延迟没有被读取,响应消息一旦显示,就拒绝消失:)


我的问题是,为什么会发生这种情况?我如何解决它?

您需要退出队列,以便处理队列中的下一件事情

在1.4或更高版本中编辑:或
next

在jQuery1.4中 调用的函数传递给另一个函数, 作为第一个论点,当 调用自动在下一个队列中退出 项目并保持队列移动。您 我会这样使用它:


发件人:

您可以尝试我的waitForIt插件:

在第二部分中,您需要做的是:

$('#response').html(response).waitForit({
    function: 'fadeOut',
    options: 'slow',
    timeOut: 1000
});

+1问一个有趣的问题……我不知道延迟方法,但似乎可以在服务器端更准确地复制http请求延迟,方法是在ajax响应代码中包含某种形式的sleep()或其他任何内容。@Husar,在我发布我的回答时选择了一个答案:-P
$('#response').html(response).waitForit({
    function: 'fadeOut',
    options: 'slow',
    timeOut: 1000
});