0

以下に、別のページの HTML コンテンツを表示するために使用しようとしているコードを示します。コードを機能させることができず、毎回エラーが発生します。ここで何が欠けていますか?

$.ajax({
    url: 'http://www.msn.com',  
    type: 'GET',
    dataType : "text/html",
    success: function (result) {
        alert('success');
        alert(result);
    },
    error: function() { 
       alert('error');
}
});
4

6 に答える 6

3

クロスドメイン AJAX リクエストを実行することはできません (サーバーが特別に設定されていない限り)。

あなたができる最善の方法は、サーバー上で PHP スクリプトを呼び出すことです。これにより、他のサーバーから HTML が取得され、ページに送り返されます。

于 2012-07-06T17:31:25.990 に答える
3

ブラウザーのセキュリティ制限により、ほとんどの "Ajax" リクエストは同一オリジン ポリシーの対象となります。要求は、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。

スクリプトおよび JSONP リクエストは、同一オリジン ポリシーの制限を受けません。

ソース: http://api.jquery.com/jQuery.get/

于 2012-07-06T17:32:34.890 に答える
2

独自のドメインに対してのみ ajax リクエストを行うことができます。それを自分のページに向けると、success 関数が呼び出されます。

于 2012-07-06T17:31:25.537 に答える
1

クロスドメイン AJAX リクエストを実際に行うつもりで、HTML レスポンスを取得しようとしている場合は、James Podolosky によるこの記事をチェックしてください。この記事では、YQL を介してこれらの種類のリクエストをパイプする方法について説明し、自動化するためのプラグインを提供しています。これは、jQuery.ajax 関数をオーバーライドすることにより、ここで期待どおりに使用できるようにします。

于 2012-07-06T17:36:58.147 に答える
1

外部 API を使用できる場合は、YQLを使用できます(ただし、完全ではありません)。

このフィドルをチェックすると、動作することがわかります。おそらくそれはあなたのためではなく、そこに投げ捨てるだけです。

于 2012-07-06T17:39:45.073 に答える
1

Chrome で、Web インスペクターを開き (右クリック、要素の検査など)、[コンソール] タブに移動して、そのコードを実行します。その後、トリガーしているクロスドメイン スクリプティングのセキュリティ エラーを実際に確認できます。

于 2012-07-06T17:31:48.473 に答える