我的文档就绪函数中有一个ajax调用。但是在ie7中大约有十分之一的时间内,ajax函数根本就没有被调用。
有没有办法检查是否已经进行了ajax调用,否则再次运行它,直到它运行到错误或成功函数?只有当我在ietester中运行页面时才会出现问题 - > ie7模式。感谢
答案 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);
}
});