web-dev-qa-db-ja.com

jQueryロード外部サイトページ

外部のウェブサイトから単一のページをロードすることは可能ですか?

単一のページを表示しようとしていますが、機能しないようです

$("#response").load("http://domain.com", function(response, status, xhr) {
   if (status == "error") {
      var msg = "Sorry but there was an error: ";
      alert(msg + xhr.status + " " + xhr.statusText);
   }
 });

助けていただければ幸いです

12
ngplayground

クロスドメインポリシー問題の原因AJAX(セキュリティ上の理由から))が発生しているため、同じドメインにないページからコンテンツを取得できません。

それを取り除き、タスクを完了するには:
PHPを呼び出すことができるファイルが必要ですgrabber.phpは、次のPHP行で実行できます:

<?php echo file_get_contents($_GET['url']); ?>

あなたのhtmlの内部より(またはちょうど好きなファイル:)

<!DOCTYPE html>
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <meta charset=utf-8 />
    <title>test</title>
</head>
<body>

    <div id="response"></div>

</body>

<script>
$(function(){
    var contentURI= 'http://domain.com #element';    // URL TO GRAB + # of any desired element // if needed :)
    $('#response').load('grabber.php?url='+ contentURI);
});
</script>

</html>

なぜこれが機能するのですか?

  • AJAXはgrabber.phpページに単純なGETリクエストを送信しています。
  • grabber.phpは目的のコンテンツをエコーし​​ます
  • これでコンテンツは(サーバー)ドメインにあります!
  • およびAJAXは喜んであなたにサービスを提供します:)
22
Roko C. Buljan

別のドメインのページを読み込もうとしていますか?

はいの場合、途中でクロスドメインポリシーを取得しているようです...

0
andri