1

I'm developing a Phonegap based app which shows some data that is stored in a remote server. How can I make it refresh data every certain time in case an error happened and it didn't get the data the first time?

this is the list.js

 $(document).ready(function(){
    
    var output = $('#vehiculosOutput');

    $.ajax({
        url: 'http://www.periodicosonofertas.com/mobile/conexVehiculos.php',
        dataType: 'jsonp',
        jsonp: 'jsoncallback',
        timeout: 5000,
        success: function(data, status){
            $.each(data, function(i,item){
                var landmark = '<li>'+item.name + '<p></p>'
                + '<p><font style="white-space:normal; font-size: small" >'+item.descripcion+'</p>' + '<p>'+item.contacto+'</p>' + '<p>'+item.telefono+'</p>' + '<p>'+item.correo+'</p><p>'+status+'</p></li>';

                output.append(landmark);
            });
        },
        error: function(){
            output.text('Error');
            //setTimeout(func.updateStatus, 1000);
        }
    });
    
});
4

2 回答 2

4

您可以为此使用长轮询。如果您还没有听说过,是一个很好的起点。如果您只需要在错误情况下重新发送请求,则以下代码段将起作用。

(function poll(delay){
        setTimeout(function(){

          $.ajax({ 
                    url: "http://127.0.0.1:8000/time/",                         
                    success: function(data){
                            $('#requiredDivId').text(data.value);
                    },
                    error: function(data){
                        //Recursive **Poll**
                        poll(30000);
                    },                  
                    dataType: "json"
                });
      }, delay);
})(0);
于 2013-04-25T07:11:54.633 回答
0

如果您想使用您在评论中提到的特定功能,那么 phonegap 中有一个名为network.isReachable的功能(您可以在此处找到更多详细信息)。您可以将该函数用于检查 settimeout 函数中的连接是否打开,如果为真,则可以运行函数将数据发送到服务器。

我希望它会帮助你

于 2013-04-26T05:45:58.187 回答