2011-02-07 7 views
0

私はサーバーに接続し、応答を受信して​​自動的に再度接続するJavascriptを作成しようとしています。FirefoxでAJAXリクエストをループしているときにエラーが発生しました

<head> 
    <title>tests</title> 

    <script type="text/javascript" src="/javascripts/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function requestData() { 
      var oRequest = new XMLHttpRequest(); 

      oRequest.onreadystatechange = handleData; 

      oRequest.open('GET', '/test.php', true); 
      oRequest.send(null); 
     } 

     function handleData() { 
      if(this.readyState == 4) { 
       document.write(this.responseText); 
       requestData(); 
      } 
     } 

     $(function(){ 

      requestData(); 

     });   
    </script> 

</head> 

<body> 
</body> 

上記のコードは、クロムで正常に動作しますが、スクリプトは次のエラーで、Firefoxで失敗した2つの要求の後に...

requestDataは

が定義されていないなぜこれが起こっている誰でも知っていますか?サーバーはただちに1桁の数字で応答しています。 (私はこれはIEでは動作しません知っているPSは、罰金thatsの)

おかげ

+0

なぜこれが起こっているかは分かりませんが、あなたのスクリプトは非常に非効率的です。毎回新しいリクエストオブジェクトを作成するのはちょっと奇妙です。おそらく、これも起こっているのですが、open/send部分だけがrequestData関数に入るように書き直してみてください。 – gnur

答えて

1

私は2つの要求があれば、文書の処理を完了し、それを閉じるためのFirefoxを取るようであることを前提としています。つまり、document.writeが再度呼び出されると、自動的にdocument.openが呼び出され、スクリプトを含む既存のドキュメントが破棄され、関数が削除されます。

document.writeの代わりにDOM manipulationを使用してください。

+0

私はdocument.writeを使用したときにのみ起こることに注意して戻ってきました。 – michael

-1

jqueryを使用する場合は、$ .ajaxなどを使用する必要があります。それは使いやすく、機能します。

http://api.jquery.com/jQuery.ajax/

$.ajax({ 
    url: 'http://my_url', 
    success: function (data) { 
     $.ajax({ 
      url: 'http://my_url_2', 
      success: function (data) { 
       alert(data); 
      } 
     }) 
    } 
})