检查是否在ie7中制作了ajaxcall

时间:2011-11-22 13:48:31

标签: javascript jquery ajax internet-explorer-7

我的文档就绪函数中有一个ajax调用。但是在ie7中大约有十分之一的时间内,ajax函数根本就没有被调用。

有没有办法检查是否已经进行了ajax调用,否则再次运行它,直到它运行到错误或成功函数?只有当我在ietester中运行页面时才会出现问题 - > ie7模式。感谢

代码:http://jsfiddle.net/jxEj5/

2 个答案:

答案 0 :(得分:1)

您可以将变量设置为监视器,并将计时器设置为每5秒发出一次ajax调用,直到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);

});

答案 1 :(得分:0)

这是jQuery中的一个例子,可以帮助你调试它

如果您不使用jQuery,我将需要查看您的代码:)

如果发生404或类似错误,将发生error函数,并且如果发生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);
    }
});