2

次のコードは、ページがロードされた後にAJAXリクエストを実行し、そのAJAXコールの応答をポップアップに表示することになっています。これはFirefoxで動作しますが、IE8で動作しない理由はわかりません。プロトタイプのAjax.RequestとInternet Explorer 8

<html> 
<head> 
    <script type="text/javascript" src="js/prototype.js"></script> 
    <script type="text/javascript"> 
     // Do this stuff when DOM finishes loading. 
     document.observe("dom:loaded", function() { 
      new Ajax.Request("page.html", { 
       onSuccess: function(response) { 
        alert(response.responseText); 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

page.htmlはちょうど

hello world 

が含まれている私が何かを明らかに不足しているか、これはプロトタイプのJSライブラリはIE8と完全に互換性がないという結果であるだろうか?私は最新の安定したプロトタイプリリース(1.6.0.3)と出血のないバージョン(1.6.1 RC3)でこれを試しました。どんな助けでも大変感謝しています。ありがとう!

答えて

2

ウェブサイトやファイルを使用していますか?私はあなたのコードをVisual StudioのWebサイトで動作させることができましたが、ファイルから試してみると「アクセスが拒否されました」というエラーが表示されます。私は、IE8のセキュリティ制限のため、ローカルファイルシステムのファイルに対してAjaxリクエストを実行できないと考えています。

ここでは、Default.aspxページでpage.htmファイルを読み込むために使用したコードと同じです。私はメソッドを変更しました - フォームではないので - そして、私は失敗と例外のためのコールバックを追加しました。例外コールバックは、ローカルファイルで私のためにトリガーされたものでした。私が言ったように、それは同じWebサイトのページにアクセスするときにうまく動作します。

だけではさておき、既存の答えに
<script type="text/javascript"> 
    document.observe('dom:loaded', function() { 
     new Ajax.Request("page.htm", { 
      method: 'get', 
      onSuccess: function(response) { 
       alert(response.responseText); 
      }, 
      onFailure: function(response) { 
       alert(response); 
      }, 
      onException: function(request,error) { 
       alert(error.message); 
      } 
     }); 
    }); 
</script> 
+0

この問題は、おかげです。 – Matthew

2

、ちょうどあなたがあなたのAjaxの呼び出しに「取得する」を使用したときにIE8がいくつかのクレイジーなキャッシングを行うことを、言及したかったです。私のWebアプリケーションはFFで正常に動作しましたが、IE8では、ajax呼び出しのいくつかは決して行われませんでした。私はメソッドを変更しました。「取得」から「投稿」にすべてが順調でした。

さらに、セッション変数を使用してIE8で面白いビジネスが行われないようにするには、HTMLページの先頭に次のメタタグを挿入します。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 
+0

ああ、この古い答えを見ての思い出。私のディフェンスでは、当時のポストとの対比の後ろにある安らかなコンセプトをよく理解していなかった。 – Housty

関連する問題