0

我正在通过 div 容器中的 jQuery ajax 加载一些结果。我希望在 2 秒延迟后向用户显示结果

我正在使用以下代码

<script type="text/javascript">
$(function() {
    $("#submit").click(function() {
        $('#myform').slideToggle('#loading');
        $('#loginhandle').show("slow");
        var name = $("input#name").val();
        var age = $("input#age").val();
        var dataString = 'name='+ name + '&age=' + age ;
        $.ajax({
            type: "POST",
            url: "results.php",
            data: dataString,
            success: function(msg) {
                $('#loading').slideToggle('#results');
                $('#results').show("slow");
                $('#results').html(msg)
                .hide()
                .fadeIn(1500, function() {
                });
            }
        });
        return false;
    });
});
</script>

结果显示在 contianer

<div id='loading' style='display:none'>
Please wait for while
</div>

<div id='results' style='display:none'>
<div id='results' class='results'></div>
</div>

我在这部分对代码进行了更改

$('#loading').slideToggle('#results');

setTimeout(function() {
    $('#loading').slideToggle('#results');
}, 2000);

但它只会延迟装载容器,因此会在显示“请稍候”时显示结果,那么我该如何延迟呢?

4

3 回答 3

3

如果我有误解,请纠正我,但要延迟一切,只需将所有成功函数代码放入您的 setTimeout 函数中。

success: function(msg) {
   setTimeout(function() {
     $('#loading').slideToggle('#results');
     $('#results').show("slow");
     $('#results').html(msg).hide().fadeIn(1500, function() {

     });}, 2000);      
 });
于 2013-10-18T21:54:41.950 回答
2

您所要做的就是修改您的success回调:

success: function(msg) {
    setTimeout(function() {
        $('#loading').slideToggle('#results');
        $('#results').show("slow");
        $('#results').html(msg).hide().fadeIn(1500, function() {

        });
    }, 2000);
}
于 2013-10-18T22:01:49.767 回答
1

要达到想要的结果,您应该更改代码

setTimeout(function() {
   $('#loading').slideToggle('#results');
   $('#results').show("slow");
   $('#results').html(msg)
}, 2000);

原因是 setTimeout 仅延迟您作为参数传递的闭包中包含的代码。

于 2013-10-18T22:06:41.253 回答