我有连接到服务器的Jquery + Ajax页面获取一些数据并显示它。这是在所有时间完成的,函数在完成所有任务后自行调用并开始反复执行。但如果komputer失去互联网连接,一切都会停止。当连接再次出现时,没有任何反应。这是javascript代码。如何进行iprove,以便在连接重新开始后它将继续工作。
$(document).ready(function() {
var a=1;
var max='23';
function kiosk()
{
if(a<max)
{
$.post('engine.php', { index: a },
function(result)
{
result = jQuery.parseJSON(result);
$('#main').css({'display':'none'});
$('#div_city').html(result.dest);
$('#div_price').html(result.price);
$('#div_price_pre').html('From ');
$('#div_price_after').html(' Euro');
$('#main').fadeIn(2000).delay(3000).fadeOut(2000, function()
{
$('#main').hide;
a++;
kiosk();
});
});
}
else
{
a=1;
kiosk();
}
}
kiosk();
});
答案 0 :(得分:3)
我建议使用
而不是使用$ .post$ .ajax({type:“post”,success:function1(),failure:function2()}。
在function2()中,您可以在超时后再次调用koisk。并且succces将是你现在创建的功能。
此链接将帮助您了解ajax函数jQuery Ajax error handling, show custom exception messages
例如代码段:
function kiosk()
{
if(a<max)
{
$.ajax({type : "POST" , url : 'engine.php',data: { index: a },
success : function(result)
{
result = jQuery.parseJSON(result);
$('#main').css({'display':'none'});
$('#div_city').html(result.dest);
$('#div_price').html(result.price);
$('#div_price_pre').html('From ');
$('#div_price_after').html(' Euro');
$('#main').fadeIn(2000).delay(3000).fadeOut(2000, function()
{
$('#main').hide;
a++;
kiosk();
});
},error : function (xhr, ajaxOptions, thrownError){ setTimeout(200,kiosk()) }
});
}
else
{
a=1;
kiosk();
}
} 亭(); });`
答案 1 :(得分:0)
使用jQuery.post
传递回调,该回调仅在成功时执行。
您应该使用具有不同回调的jQuery.ajax
。通过complete
,success
和error
回调,查看documentation。
您甚至可以使用statusCode
将特定HTTP代码映射到自定义函数。
答案 2 :(得分:-1)
脚本破坏因为我认为它会抛出异常。您可以添加代码try和catch块,即使有错误,您也可以继续尝试。
try {
result = jQuery.parseJSON(result);
// do your work
} catch {
// call function again
}
或者你可以使用,jquery ajax,它有一个onerror事件。