2011-12-27 13 views
2

js setTimeout関数でコードを使用しましたが、これはfirefoxで動作しています;私は秒単位でリロードされます。 IEでは動作しません。 メソッドを 'POST'として変更しましたが、要求がサポートされていないわけではなく、再び 'GET'に変更されました。 どのような解決策ですか?setTimeout()へのコールバックパラメータの受け渡しはIEでは機能しませんか?

function getCallDetails(cId){ 
    $.ajax({ 
     url : 'callInfo.html?cId='+cId, 
     method : "GET", 
     dataType: "json",  
     success : function(data) { 
     callResult=data.rows; 

     showCallDetails(callResult,cId); 
     }, 
     failure : function(form, action) { 
     } 
    }); 
    window.setTimeout(getCallDetails, 1000,[cId]); 

} 
+0

今後参照するには、試したIEのバージョンを含めてください(必要に応じて投稿を更新してください)。また、このような状況では、XHR *リクエストとレスポンス*がピークに達します。 (私はIEが何を提供しているか分かりませんが、いつもfiddler2があります。)それは奇妙なデータを表示するでしょう。 –

+0

IEの8と9の両方のバージョンを使用しました –

答えて

4

試してみてください。

window.setTimeout(function() { getCallDetails(cId); }, 1000); 

また、私は成功コールバックにその線を移動します:

 
window.setTimeout(function() { 
    getCallDetails(cId); 
}, 1000); 

は、それが

+0

私はこの方法を試みましたが、影響はありません.. –

+0

thats strange ... –

6

setTimeoutのIE以外のバージョンを使用しています。
IEでは、コールバックにパラメータを渡す方法がありません。

また、setTimeoutを呼び出すことは非常に間違っています。呼び出しごとに2つ以上の呼び出しが生成されるため、指数関数的に多くの同時要求が発生します。

+1

すべてのブラウザは、IE以外のsetTimeoutに引数を送信することをサポートしています。 IEでは、代わりに言語の引数(vbscript、jscript、またはJavaScript)を送信することができます。 –

+1

@MattGreer:私はそれを知らなかった。ありがとう。 – SLaks

+1

+1は "フォークボム"の動作を指摘するためのものです。しかし、 "この問題を解決する方法"ということは忘れてしまいます。 –

6

ではなく、次のことを試してみてくださいお役に立てば幸いです。

+2

なぜ成功コールバックに移動しますか? (そして失敗したらどうなるの?) –

+0

@pst:これはOPの関心事です。 – SLaks

2

これは、これは

function getCallDetails(cId){ 
     $.ajax({ 
      url : 'callInfo.html?cId='+cId+'&randomNo='+ Math.rand(), 
      method : "GET", 
      dataType: "json",  
      success : function(data) { 
      callResult=data.rows; 

      showCallDetails(callResult,cId); 
      }, 
      failure : function(form, action) { 
      } 
     }); 
     window.setTimeout(function() { getCallDetails(cId); }, 1000); 


    } 

とランダムなし無視@サーバ側によって解決されるIE

でキャッシュの問題が原因です。

+0

これも便利です:$ .ajaxSetup({ // AJAX応答のキャッシュを無効にする キャッシュ:false }); –

関連する問題