2012-01-23 20 views
0

私はこのように、別のドメイン上に存在するURLがありますURL呼び出しのHTML結果をDOMに追加する方法は?

http://ads.adserver.com/ad?site=1233&zone=45435 

ブラウザでこのURLを入力し、その結果は次のようにHTMLである:上記のようにレンダリングさ

<a href="http://www.google.com" target=""><img src="htt://ads.adserver.com/i/image.gif" border="0"/></a><br/><a href="http://ads.adserver.com/redir/12313" target="">Test</a> 

その下の第2のリンクを有するリンクで包まれた画像。

このURLをスクリプトタグで取得してDOMに追加しようとしましたが、上記のHTMLは表示されませんでした。

var ad_script = document.createElement('script'); 

ad_script.type = 'text/javascript'; 
ad_script.src = 'http://ads.adserver.com/ad?site=1233&zone=45435'; 

li.appendChild(ad_script); 

このURLを呼び出してその結果をページに表示する方法はありますか?グローバルなコンテキストでこれを呼び出さないので、$ .getScript()を使用することはできません。私は、このHTMLを表示したい場所に正確に表示する必要があります。

編集:私がこのルートを試している唯一の理由は、サードパーティがJSON-Pインターフェイスを提供していないことです。

EDIT2:残念ながら、私はアプリケーションサーバーにいません。

EDIT3:これはiPhone用です。

+0

を画像をロードするようになり、私はせずにこれを実現するためにどのような方法が表示されませんJSONPサービスの終わりに、またはアプリケーションサーバーなしで。あなたの問題は、返されるものはスクリプトではないため、DOMに追加することは何もしないことです。 – SoWeLie

答えて

2

...簡単な方法は、それ自身のiframe内に

<iframe src='http://ads.adserver.com/ad?site=1233&zone=45435' height='200px' width='200px' /> 
+0

私はクロスドメインの問題に合格することができるので、私はこの答えを受け入れています。しかし、これはiPhone/WebKitプラットフォームで表示されていることを忘れていましたが、iframeのサポートは少し不思議です。 – Stephen

+0

iPhoneでこれを試したところ、URLが読み込まれましたが、iframeが不具合です。 JSON-Pがサポートされているかどうかについては、ベンダーに問い合わせる必要があります。 :-( – Stephen

+0

JSON-Pサポートはこれをはるかに簡単にするでしょう。javascriptのテンプレートエンジンを使用して、それを表示する方法をレンダリングします –

0

jsonpアプローチを採用してください。実際のスクリプトタグを使用し、そのHTMLマークアップをdomに追加するレスポンスとしてjavascript関数を実行します。スクリプトタグが存在するページのDOMに追加されます。

+0

問題のサードパーティは、JSON-Pインターフェイスを提供していません。彼らはJSONインターフェイスを持っていますが、これは自分のドメインからそのサードパーティドメインへのクロスドメイン要求なので、ブラウザセキュリティモデルは$ .getJSON()または$ .ajax()にJSONを取得させません。 – Stephen

1

これにはajaxを使用します。最も簡単な方法は、jQueryの.load()メソッドです。あなたがに行くためのコンテンツがholderのIDを持っていたい要素を想定し

は、あなたはそれはあなたの選択した要素にWebページの内容を置く

('#holder').load('http://ads.adserver.com/ad?site=1233&zone=45435') 

を行うだろう。 http://api.jquery.com/load/

編集:申し訳ありませんが、サイト間のajaxの制限を忘れました。

if(isset($_GET['url'])){ 
    echo file_get_contents($_GET['url']) 
} 

、その後

('#holder').load('http://yoursite.com/yourpage.php?url=http://ads.adserver.com/ad?site=1233&zone=45435') 
+0

HTTP 200エラーが発生しました。 URLは別のドメインにあるため、クロスドメインセキュリティによって停止しました。 – Stephen

+0

@Stephen、PHPページ、または最初の部分で2番目のコードを試しましたか? – mowwwalker

+0

私たちのプラットフォームがWebアプリケーションサーバー上にないため、2番目の部分(編集済みの追加)を実行できません。静的なHTMLファイルを出力として作成するビルドプロセスがあります。そのため、私はクライアント側のみのソリューションを探しています。 – Stephen

0

例えば、これを達成することができますjQueryのAjaxのコールの数があります:あなたは代わりのようなPHPのページを設定することができ jQuery.get( 'HTTPは://ads.adserver.com/ad?site = 1233 & zone = 45435 '、function(data){jQuery(updateElementQuery).html(data);});

+0

同じ発信元ポリシーがこれを禁止しています。 – SoWeLie

+1

私はHTTP 200リクエストを受け取ります。そのため、クロスドメインなので、ブラウザは要求を拒否していると思います。 – Stephen

0

jquery method 'load'

`$( '#結果')。負荷(URL、機能(応答){

$( '#私の-LI')を使用してみてください。($( '#を追加結果 ').html());

$('#結果 ')。html(null);

}); `#resultがdiv要素

私はそれはあなたを助けHPEをsomehiddenさ

。あなたはあなたが原因クロスドメインの問題にこれをロードする方法に限定されている

+0

申し訳ありませんが、これによりドメイン間のエラーが発生します。 URLは別のドメインにあるため、これは機能しません。 – Stephen

関連する問題