проверить, был ли сделан ajaxcall в ie7 - PullRequest
0 голосов
/ 22 ноября 2011

В моем документе готова функция ajax.Но примерно в 1 из 10 случаев в ie7 функция ajax вообще не вызывается.

Есть ли способ проверить, был ли выполнен вызов ajax, в противном случае запустите его снова, пока он не выполнит функции ошибки или успеха?Проблема возникает, только когда я запускаю страницу в режиме ietester -> ie7.Спасибо

код: http://jsfiddle.net/jxEj5/

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Вы можете установить переменную в качестве монитора и таймера для вызова ajax каждые 5 секунд, пока не завершится вызов ajaxCall. Для монитора установлено значение var gotAjax = false, а при успешной реализации Ajax устанавливается значение true gotAjax = true.

Вместо прямого вызова $ ajax, вы устанавливаете время через setTimeout(ajaxCall, 5000). Если в таймере установлено ajaxCall, таймер очищается через clearTimeout(ajaxCall)

.
$(function() {
    var gotAjax = false;

    var ajaxCall = function () {
      if (!gotAjax) {
        $.ajax({
            url: '../SentinelOperationsUI/GenericHandler.ashx',
            dataType: 'json',
            data: {
                'FunctionName': 'GetActivity',
                'SearchType': 'Single',
                'postedData': JSON.stringify($('#content').data('postedData'))
            },
            success: function(data) {
                gotAjax = true;
                $('#content').data('activityKey', data.SENTINEL_OPERATION_ACTIVITY_KEY);

                $.ajax({
                    url: '../SentinelOperationsUI/ajax/activityviews/' + data.ACTIVITY_VIEW,
                    dataType: 'html',
                    success: function(data) {

                        $('#content').hide().html(data).fadeIn(200);
                        $('#parenttabs, #tabs, #tabs2, #parenttab-1, #parenttab-2').tabs();
                    }
                });


            }
        });
      }
      else {
        clearTimeout(ajaxCall);
      }
    };

    setTimeout(ajaxCall, 5000);

});
0 голосов
/ 22 ноября 2011

Это пример в jQuery, который должен помочь вам отладить его

Если вы не используете jQuery, мне нужно будет увидеть ваш код:)

Функция errorпроисходят в случае возникновения ошибки 404 или аналогичной, а также в случае возникновения ajax DID, но при получении какого-либо неожиданного ответа и при прослушивании вашего JavaScript-кода try .. catch поможет вам легче обнаружить ошибку:)

$.ajax({
    url: "file.php",
    type : "POST",
    contentType : "application/x-www-form-urlencoded",
    success: function(response){
        try{
            // Success code
        }catch(e){
            // Possibly you have an error in your JS, this should alert it to you
            alert(e.message);
        }
    },
    error : function(jqXHR, textStatus, errorThrown){
        // Error occured, lets see what's wrong
        alert("error " + textStatus + ": " + errorThrown);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...