1
我正面臨一個奇怪的問題,其中ajax請求沒有完成,當後續的請求被做出。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的數(目前爲256 prefork的MPM和300工人MPM。
我將console.log添加到live函數並重新測試它。下面是我發現的行爲:在第一次請求期間,一切正常,並且單個請求正常工作,並且在完成ajax請求後,colorbox被關閉。第二個請求也完成了,但這次有兩個請求被髮送到服務器。第三個要求根本沒有完成。我需要更好地理解live()方法,然後再回到你身邊。 – libregeek