2013-07-18 127 views
2

我遇到了一個問題。當我發出ajax請求時,它會順利通過,但狀態正在等待超過1秒鐘。這對我來說似乎真的很高。爲什麼ajax等待一秒鐘?

這裏是網絡標籤的鉻截圖 Network tab

這裏是我使用AJAX功能。

function subCommentSubmit() { 
     $('.subComment').on('submit', function() { 

      var url = "/laravel/public/utility/submitsubcomment"; // the script where you handle the form input. 
      // Submits the data with ajax, method type is POST 
      var currentElement = $(this); 
      var thatPar = currentElement.parent().parent(); 
      var liveSubCommSection = $('> .live-sub-comments', thatPar); 
      var commentLoader = $('> .loader-comments > .loader', thatPar); 

      var formData = currentElement.serialize(); 
      $('.new-reply', currentElement).val('').blur().trigger('autosize.resize'); 

      commentLoader.removeClass('hide').fadeIn(250, function() { 
       $.ajax({ 
         type: "POST", 
         url: url, 
         data: formData, // serializes the form's elements. 
         success: function(data) 
         {  
          commentLoader.fadeOut(250, function() { 
           commentLoader.addClass('hide'); 
           var response = JSON.parse(data); 
           var commentPost = $('<li class="single-user-reply"> <div class="user-ava-cont"> <a href="'+ response.userid +'" class="user-ava-a"><img src="../images/avatest1.png"> </a> </div><div class="s-w-user-details"><a href="'+ response.userid +'" class="s-w-poster upop">'+ response.username +' </a> <span class="s-w-timestamp">1 second ago</span><a href="#" class="likes-but notliked active">Like</a> <a href="#" class="likes-but liked">Liked</a><ul class="more-dropdown-cont" role="button"> <li class="dropdown minidrop"><button class="more-dropdown dropdown-toggle" role="button" data-toggle="dropdown"><i class="icon down"></i></button><ul class="dropdown-menu" role="menu" aria-labelledby="people"><li role="presentation"><a class="u-a-a" role="menuitem" tabindex="-1" href="#">Block User</a></li><li role="presentation"><a class="u-a-a" role="menuitem" tabindex="-1" href="#">Report Abuse</a></li></ul></li></ul><div class="s-w-user-post">'+ response.comment +'</div><div class="clear"></div></div></li>'); 
           commentPost.hide(); 
           liveSubCommSection.append(commentPost.fadeIn(250)); 
           subCommentSubmit(); 
          }); 
         } 
       }); 
      }); 
      currentElement.unbind('submit'); 
      // Ensures it doesn't route the form the normal way, and ajax takes over 
      return false; 

     }); 
    } 
+6

ajax自己不會「等待」。它會在服務器發送數據時作出反應。真正要問的問題是'爲什麼拉拉維爾接管了一秒來處理請求'。 –

+0

服務器處理和處理請求需要一秒嗎?你所看到的是網絡請求/響應,而不是任何對JavaScript代碼執行的分析。 AJAX正在等待,因爲服務器沒有回覆。 – David

+0

這是一個一致的問題?這可能只是連接緩慢的一天。它也可以是服務器正在做的事情。 –

回答

1

我會分析您的PHP文件,因爲這似乎是您的問題的來源。

我不熟悉Laravel的分析選項,但簡單的東西你可以做的是:

class utility{ 

    function submitsubcomment(){ 
     $start = microtime(true); 

     //Your code is here 

     echo (microtime(true) - $start); 
    } 

} 

祝您好運!

1
  1. 忘記AJAX片刻。只需創建一個HTML表單,其操作是/laravel/public/utility/submitsubcomment,方法是POST和表單字段。這將證明AJAX沒有錯。
  2. 使用此表格可以計算出服務器爲何需要這麼長時間。獲取PHP記錄步驟之間的時間,然後這將發現事情花費的時間。您可以通過創建一個用於設置適當環境變量並從命令行運行它的線束來加速此過程。

如果您使用的是數據庫,請確保您具有相應的查詢索引。

1

問題是我的數據庫非常慢。代碼本身非常好。我使用本地主機連接到本地數據庫,這比使用127.0.0.1慢得多。一旦我更改了數據庫主機,它解決了我的問題!