Многократные вызовы AJAX (jquery), вызывающие чрезвычайную медлительность и сбои - PullRequest
0 голосов
/ 10 июня 2009

Я написал некоторый код, который просит пользователя ввести диапазон дат и нажать кнопку «Далее». Это запускает AJAX-вызов к файлу, который выясняет, какие даты включены в эти дни, и выводит их на экран.

Если пользователь изменяет даты и снова нажимает «далее», он снова выполняет расчет. После выполнения этого несколько раз подряд он начинает работать очень медленно, и в конечном итоге он все равно вылетает из браузера.

Кто-нибудь знает, почему это происходит и что я могу сделать, чтобы это исправить?

Большое спасибо за ваше время.

$("#list").ajaxComplete(function(request, settings){
     $('#addNewDays').bind('submit', function() {
            $(this).ajaxSubmit(function() {
                  $('#dateDisplay').load('calculateDays.php?employeeId=' + $('#employeeId').val() + '&fromDay=' + $('#fromDay').val() + '&toDay=' + $('#toDay').val());
            });
            return false; // <-- important!
     });
});

Ответы [ 3 ]

0 голосов
/ 10 июня 2009
function enableMyButton(){
    $("#myNextButton").attr('disabled','false');
}

$("#myNextButton").click(function(){
    $("#myNextButton").attr('disabled','true');
    // do ajax stuff, set the callback function to enableMyButton
});

Что-то подобное должно сделать вас правильно.

0 голосов
/ 10 июня 2009

Почему вы повторно присоединяете событие отправки к кнопке при каждом нажатии? Я предполагаю, что это потому, что кнопка заменяется новым содержанием. Если это так, ограничьте возвращение фрагмента только датами и ничем иным.

0 голосов
/ 10 июня 2009

Вы можете отключить кнопку при запуске запроса, а затем снова включить ее после завершения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...