-1

IE8で$httpを使用する際に問題が発生します。更新を行うまで、リクエストはサーバーに到達しません。同じリンクに戻ると、もう一度更新を押すまで同じ問題が発生します。

奇妙なことに、WebサーバーがLAN上にあり、LAN内のサーバーに対して要求が行われた場合、正常に機能します。ただし、Webサーバーがリモートでホストされている場合は、機能しません。

コードは次のとおりです。

Index.html

{{test}}

コントローラ

app.controller(
    "TestController",
    function( $scope, $http) {
        var url = '/test/get_data';
        $http.get(url).success(function(data) {
            $scope.test = data;
        });
    }
);

このエラーが発生しました:TypeError:オブジェクトはこのプロパティまたはmethodundefinedをサポートしていません

以前にJSFiddleを準備しましたが、JSFiddleはie8で壊れているため、ここでは提供しません。

残念ながら、私はあなたと共有できるリモートサーバーを持っていません。

編集 以前は、以下の1つの回答で言及されている同一生成元ポリシーが原因で、「アクセスが拒否されました」というエラーが発生する外部URLを使用していました。しかし、これは私の最初の問題ではありませんでした。リクエストが同じ発信元からのものである場合、上記の問題がまだ発生します

4

2 に答える 2

1

これはクロス ドメイン リクエストであり、Same Origin Policyにより ajax では許可されていません。

これには 2 つの解決策があり
ます 1. JSONP : JavaScript コールバック メカニズムを使用してクロス ドメインの ajax リクエストを処理するクロス ブラウザーの方法です
2. CORS : HTML5 標準であり、IE を除くほとんどの最新ブラウザーで実装されています

Mongodb ラボは、CORS をサポートしているため、jsonp をサポートしていません。そのため、リクエストが IE で失敗し、Chrome やその他のブラウザーで機能します。

この投稿によると、彼らはjsonpをサポートする計画を持っていないので、IEでこれを機能させる方法はありません。

于 2013-03-11T03:37:40.637 に答える
0

だから私は修正を見つけました...これがこの問題を経験した人に役立つことを願っています

  1. jQuery の後に Angular スクリプトをロードする必要があります。私が使用している Yii フレームワークは jQuery を自動ロードし、角度は jQuery の後に含まれていなかったため、これはありませんでした。
  2. すべてのコントローラー関数は、 body セクションの最後 ( close の直前) にある必要があります。
  3. angular 1.0.5 にアップデートすると問題が解決するようです。問題は、上記のすべてのトリックで 1.0.4 で発生しました。791804bdの修正に関連していると思います
于 2013-03-12T00:22:47.410 に答える