2012-03-06 19 views
0

サーバーに接続するJquery + Ajaxページがあり、データを取得して表示します。これは常に行われ、関数はすべてのタスクを完了して何度も何度も実行を開始した後に自分自身を呼び出します。しかし、komputerがインターネット接続を失った場合、すべてが停止します。そして接続が再び戻ってくると、何も起こりません。ここにJavaScriptのコードです。どのように私はそれが再び接続が戻った後に動作するようにそれを浸食することができます。接続が失われた場合、javascriptはサーバー側に再接続しません。

$(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&nbsp;'); 
      $('#div_price_after').html('&nbsp;Euro'); 

       $('#main').fadeIn(2000).delay(3000).fadeOut(2000, function() 
        { 

          $('#main').hide; 
          a++; 
          kiosk(); 


        }); 

     }); 
    } 
    else 
    { 
     a=1; 
     kiosk(); 
    } 

} 
kiosk(); 
}); 

答えて

3

私はむしろあなたが

$アヤックス(使用.post $使用するよりもお勧めします{タイプ: "ポスト"、成功:関数1()、失敗:機能2を()}。

関数2で( 。。)あなたはタイムアウト後、再び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&nbsp;'); 
     $('#div_price_after').html('&nbsp;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(); 
} 

} kiosk(); }); `

+0

私は正しいと思いますが、構文エラーが表示されます – David

+0

は私のせいでした。すべてが機能しています。ありがとう!!! – David

-1

私はそれが例外をスローすると思うので、スクリプトが壊れています。 tryとcatchのコードを追加することができます。エラーがあっても引き続き試すことができます。

try { 
    result = jQuery.parseJSON(result); 
    // do your work 
} catch { 
    // call function again 
} 

または、jquery ajaxを使用すると、onerrorイベントが発生します。

0

jQuery.postを使用すると、成功した場合にのみ実行されるコールバックが渡されます。 異なるコールバックを持つjQuery.ajaxを使用する必要があります。 complete,successおよびerrorコールバックを持つdocumentationを参照してください。

statusCodeを使用して、特定のHTTPコードをカスタム関数にマップすることもできます。

関連する問題