Apache jqueryajax请求没有';完成不了
我面临一个奇怪的问题,即当后续请求发出时,ajax请求无法完成 当网页第一次加载时,ajax调用可以正常工作。但是,如果我调用相同的方法而不刷新页面,那么请求永远不会完成,甚至apache也没有响应。我检查了apache错误日志,发现以下条目: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代
[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()方法,然后再与您联系。