2

我有一个问题。当我发出 ajax 请求时,一切正常,但状态正在等待超过 1 秒。这对我来说似乎真的很高。

这是chrome中网络选项卡的屏幕截图 网络选项卡

这是我正在使用的 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;

        });
    }
4

3 回答 3

1

问题是我的数据库非常慢。代码本身非常好。我使用 localhost 连接到本地数据库,这比使用 127.0.0.1 慢得多。一旦我更改了数据库主机,它就解决了我的问题!

于 2013-07-19T03:58:06.037 回答
1

我会分析您的 PHP 文件,因为这似乎是您问题的根源。

我不熟悉 Laravel 的分析选项,但您可以做的一些简单的事情是:

class utility{

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

        //Your code is here

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

}

祝你好运!

于 2013-07-18T18:06:15.030 回答
1
  1. 暂时忘记 AJAX。只需创建一个 HTML 表单,操作为/laravel/public/utility/submitsubcomment,方法为 POST,表单字段与之前一样。这将证明 AJAX 没有错。
  2. 使用此表格找出服务器花费这么长时间的原因。让 PHP 记录步骤之间的时间,然后这将发现事情在哪里花费时间。您可以通过创建一个设置适当环境变量的工具来加速此过程,然后从命令行运行它。

如果您使用的是数据库,请确保您有适合查询的索引。

于 2013-07-18T18:12:50.710 回答