外部HTMLページを自分のページのdivに読み込むことができません。
私のjqueryコードは:
$(document).ready(function(){
var url = 'http://www.google.com';
$.get(url, function(response) {
$('div#external').html(response);
});
});
私のHTMLページは
<html><body><div id="external"></div></body></html>
別のJQueryコードも使用してみました
$(document).ready(function() {
$('#external').load('http://google.com');
});
誰か助けてください。
ありがとうアマル
ブラウザの制限により、ほとんどのAjaxリクエストは「同じオリジンポリシー」の対象となります。つまり、ほとんどの場合、jQueryのajaxメソッドを使用して、プロキシ、YQL、JSONP、または同等の手法を使用せずに外部ドメインからデータをフェッチすることはできません。
純粋なJavaScriptオプションは、YahooのYQLサービスです。 jQuery.ajax
を拡張して外部ドメインを許可するプラグインがあります: https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js
このプラグインを使用すると、質問のajaxサンプルが許可されます。
別のオプションは、サーバー側のプロキシを使用してから、ajaxを使用してそのページを要求することです。サーバーでPHPを実行できる場合は、「php ajax proxy」のようなものを探してみてください。たくさんの結果が得られます。
最初にJSファイル https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js をダウンロードし、jsファイルをページに含めます。以下は、外部ページをロードするために使用した関数です。
function test () {
$.ajax({
url: 'http://external_site.com',
type: 'GET',
success: function(res) {
var content = $(res.responseText).text();
alert(content);
}
});
}
これは、外部サイトからコンテンツを取得するのに役立ちました。
$('div#external').html();
は、div
オブジェクト内のHTMLを空の文字列に設定します。
response
は返されるHTMLであるため、おそらく次のことを意味します。
$(document).ready(function(){
var url = 'http://www.google.com';
$.get(url, function(response) {
$('div#external').html(response);
});
});
JQuery $.get
に関するドキュメントは、このような例を提供します。
次の問題は、クロスドメインリクエストを作成しようとしていることです。この領域でのJavaScriptのセキュリティ制限を回避する方法の詳細については、 this site を参照してください。
同じオリジンポリシー により、ドメイン外へのリクエストの送信にかなり制限されます。 [〜#〜] jsonp [〜#〜] は回避策ですが、役立つ場合があります。
クロスドメイン制限を回避するには、代わりにjQuery.getJSONを試してください(JSONPを使用)。
jQuery.getJSON(url, function(data){
// your code here
$('div#external').html(data);
});
PS:ただし、URL変数には次のようなコールバック関数を含める必要があります: "http://www.example.com/?t="+v+"&callback=?"