jQuery ajaxStop в успехе ajax - PullRequest
       3

jQuery ajaxStop в успехе ajax

1 голос
/ 03 февраля 2011

У меня есть плагин jQuery, который мне нужен для реализации ajaxStop для его части. Ниже приведен фрагмент из моего кода, чтобы показать структуру (не может быть 100%).

Я показал, как мои функции настраиваются как методы на случай, если ajaxStop необходимо реализовать как глобальную функцию, но я не уверен, как мне это сделать в текущей настройке.

Проблема, с которой я сталкиваюсь, иногда не срабатывает при запуске ajaxStop, даже если мой ответ ajax возвращается успешно.

  1. Могу ли я вызвать ajaxStop с помощью успешного вызова ajax?
  2. Какой элемент должен вызывать ajaxStop для $ (). ajaxStop ИЛИ $ (this) .ajaxStop

Большое спасибо за любую помощь!

Также, возможно, у кого-нибудь были проблемы с ajaxStop на Mac? Я просто не могу найти решение, почему это не работает постоянно.

Я думаю, что ajaxStop не очень надежен: (

(function($) {

$.fn.doRentalButtons = function($params) {

    var newMethods = {

        startAction:function() {
            var $button = $('a.button');
            $button.click(function(){
                var params = {one:'something',two:'morethings'}
                $(this).doAjax(params);
            });
        },

        doAjax:function(params) {

            $current_button = $(this);
            $container_div = $('#container');

            $.ajax({
               type: 'POST',
               url: 'whatever.html',
               data: params,
               success: function(data) {
                   //dostuff

                   var jQueryObject = 
                   if (global_var_hide == 0) {
                       $(this).afterPostRequests($current_button);
                   }
               }()
            });
        },

        afterPostRequests:function($current_button) {
            $().ajaxStop(function(){
               $(this).show();
               $(this).positionDiv($current_button);
            });
        }
    };

    $.each(newMethods, function(i) {
        $.fn[i] = this;
    });
};

})(jQuery);

1 Ответ

2 голосов
/ 08 февраля 2011

Просто обновление по этому вопросу:

В итоге я использовал счетчик вместо AjaxStop. Увеличивайте счетчик при каждом нажатии кнопки. А на ajax успех / ошибка минус 1 со счетчика.

Тогда я только запускаю свой запрос ajax, если счетчик == 0.

Кажется, это работает для того, что мне нужно. Но это кажется временным решением, и, возможно, есть лучший способ.

(function($) {

$.fn.doRentalButtons = function($params) {

    var ajax_busy = 0; 

    var newMethods = {

        startAction:function() {
            var $button = $('a.button');
            $button.click(function(){
                var params = {one:'something',two:'morethings'}
                $(this).doAjax(params);
            });
        },

        doAjax:function(params) {

            $current_button = $(this);
            $container_div = $('#container');

            ajax_busy++;

            $.ajax({
               type: 'POST',
               url: 'whatever.html',
               data: params,
               success: function(data) {
                   //dostuff

                   ajax_busy--;

                   var jQueryObject = $('#myDiv');
                   if (ajax_busy == 0) {

                       jQueryObject.show();
                       jQueryObject.positionDiv($current_button);

                   }
               },
               error: function() {
                  ajax_busy--;
               }
            });
        }
    };

    $.each(newMethods, function(i) {
        $.fn[i] = this;
    });
};

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