2013-10-18 82 views
0

我通過jQuery的Ajax在div容器中加載一些結果。 我想的結果被示於後2秒延時如何延遲阿賈克斯響應秒秒

我使用在contianer所示的下面的代碼

<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> 

結果

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

但它只是延遲加載容器,所以結果顯示,而它說'請等待' 所以我怎麼能延遲它?

+1

您必須延遲成功回調中的所有內容。但請在問題中正確設置您的代碼! – bfavaretto

+0

你不能在PHP中調查請求嗎?睡覺()? –

+1

Ids應該是唯一的,因此要麼重命名'#results'或刪除第二個ID並使用find()或children()來訪問'.results'元素。爲什麼你要讓用戶等待**兩個**秒?這是瘋了伊豆。只問問自己,你想等一下? ;-) – nietonfir

回答

3

糾正我,如果我誤解,但延遲一切只是把所有的成功函數代碼在你的setTimeout函數。

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

    });}, 2000);  
}); 
+0

謝謝你們倆......它完美無缺 –

+0

@JackBen,如果您找到了可行的解決方案,請不要忘記選擇正確的答案。 – Kehlan

2

所有你所要做的就是修改success回調:

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

     }); 
    }, 2000); 
} 
1

達到想要的結果,你應該在

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

原因更改代碼是的setTimeout只延遲代碼包含在作爲參數傳遞的閉包中。