Apache jqueryajax请求没有';完成不了

Apache jqueryajax请求没有';完成不了,apache,jquery,Apache,Jquery,我面临一个奇怪的问题,即当后续请求发出时,ajax请求无法完成 当网页第一次加载时,ajax调用可以正常工作。但是,如果我调用相同的方法而不刷新页面,那么请求永远不会完成,甚至apache也没有响应。我检查了apache错误日志,发现以下条目: [Tue Nov 01 16:41:42 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting 下面是我尝试执行的jQuery代

我面临一个奇怪的问题,即当后续请求发出时,ajax请求无法完成

当网页第一次加载时,ajax调用可以正常工作。但是,如果我调用相同的方法而不刷新页面,那么请求永远不会完成,甚至apache也没有响应。我检查了apache错误日志,发现以下条目:

[Tue Nov 01 16:41:42 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting
下面是我尝试执行的jQuery代码:

(function($) {
    $(function(){

        form = $('form.crud');
         $("#end_date").datepicker({dateFormat: 'yy-mm-dd'});

/** Contract Comments **/
        $('#actionbar ul li:nth-child(1) a').colorbox({
            scrollable: false,
            innerWidth: 600,
            innerHeight: 280,
            href: SITE_URL + 'admin/contracts/comments/create_ajax',
            onComplete: function() {
                $.colorbox.resize();
                $('form#comments').removeAttr('action');
                $('form#comments').live('submit', function(e) {
                    var form_data = $(this).serialize();

                    $.ajax({
                        url: SITE_URL + 'admin/contracts/comments/create_ajax',
                        type: "POST",
                            data: form_data,
                        success: function(obj) {
                            if(obj.status == 'ok') {
                                $.colorbox.close();
                            } else {
                                $('#cboxLoadedContent').html(obj.message + obj.form);
                                $('#cboxLoadedContent p:first').addClass('notification error').show();
                            }
                        }
                    });
                    e.preventDefault();
                });
            }
        });
    });
})(jQuery);

浏览器似乎正在向服务器发送大量冗余请求。增加MaxClients计数有意义吗(目前prefork MPM为256,worker MPM为300)。

似乎您正在有效地淹没您的Web服务器。您应该使用Firebug或Chrome developers tools之类的工具,并查看您发送的ajax请求数

我请求在
$('form#comments')中使用live事件。live('submit',函数(e){
正在运行多次(使用
控制台.log('attaching live event');
检查它)。请尝试避免实时事件,或者至少在绑定的事件元素中添加一个类,以便可以筛选实时事件选择器以避免绑定已绑定的事件选择器

这应该起作用:

$("form#comments:not(.live-submit-binded)")
   .addClass('live-submit-binded')
   .live('submit', function(e) {
    (...)
});

看起来您正在有效地淹没您的Web服务器。您应该使用Firebug或Chrome developers tools之类的工具,并查看您发送的ajax请求的数量

我请求在
$('form#comments')中使用live事件。live('submit',函数(e){
正在运行多次(使用
控制台.log('attaching live event');
检查它)。请尝试避免实时事件,或者至少在绑定的事件元素中添加一个类,以便可以筛选实时事件选择器以避免绑定已绑定的事件选择器

这应该起作用:

$("form#comments:not(.live-submit-binded)")
   .addClass('live-submit-binded')
   .live('submit', function(e) {
    (...)
});

我在live函数中添加了console.log并对其进行了重新测试。以下是我发现的行为:在第一个请求中,通过一个请求,一切都正常工作,并且在完成ajax请求后,色盒关闭。第二个请求也完成了,但这次有两个请求被发送到服务器。第三个请求没有得到c完全完成了。我需要更好地理解live()方法,然后返回给您。我将console.log添加到live函数中并重新测试了它。我发现的行为如下:在第一个请求中,一个请求一切正常,并且在完成ajax请求后颜色框关闭。第二个请求也完成了,但这次有两个请求被发送到服务器r、 第三个请求根本没有完成。我需要更好地理解live()方法,然后再与您联系。