2009-07-16 20 views
0

外部ページからコンテンツを取得し、それを関数の引数として渡す必要があります。私はJQueryのドキュメントでurl()メソッドを調べましたが、divやその他のHTML要素に外部コンテンツを挿入するためにしか使用できないようです。JQuery - AJAX load()メソッドのヘルプ

基本的に私は何をする必要があるかである。そのようなことが可能である場合

// I need to insert external page's content into the cont variable, how to do that? 
var cont; 
// so I can pass it to the bt() function (it's a tooltip plugin) 
$('.class').bt(cont, { 
    fill: '#2a4d6b', 
    cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
}); 

誰も教えてもらえますか?

答えて

1

あなたが使用したい.get(http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype)コールバック関数を引数としてとります。以下は、リンクを読み込んでアラートに表示します。

$.get('http://your.website.com/page.html', 
    function (data) { alert(data) }); 

あなたの例の書き換え:

$.get('http://your.website.com/page.html', 
     function (data) { setClass(data); }); 

function setClass(cont) { 
    $('.class').bt(cont, { 
     fill: '#2a4d6b', 
     cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
    }); 
} 
+0

あなたは確かに.classごとに異なるコンテンツを得ることができますが、これはそれを行う最も効率的な方法ではありません。ページが最初にロードされたとき(AJAXなし)にコンテンツを設定するほうが賢明であり、ツールチップがロードされているときにコンテンツをロードしたい場合は、ループ内ですべてを実行する必要はありません。たぶん悪いユーザーエクスペリエンス(コンテンツがロードされている間、あまりにも多くの時間を待っている)でしょう。 – Prestaul

+0

問題は、多くのツールチップがあり、そのほとんどが他のページから動的に生成されるため、AJAXが唯一の方法だということです。それらをすべてPHPでロードすると、ページの読み込みがずっと遅くなります。 外部テキストの読み込み中にツールチップに「読み込み中...」というテキストが表示されます。そして、それは時間がかかりすぎず、1-2秒でツールチップがロードされます。 –

2
$.load("http://someplace", function(data){ 
    $('.class').bt(data, { 
     fill: '#2a4d6b', 
     cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
    }); 
}); 

いいえ?

外部でも、どのように外部ですか?あなたは他のドメインから何かを得ることはできません。それ以外の場合は動作します。

+0

は同意、これは動作しますが、間違いなく少ない効率的なこの方法を使用するように設計されているに.getよりもあるでしょうDOM –

+1

の一部である必要はありdoesntの要素。ロードは、要素の内容をロードするために使用する必要があります、コールバックはそこにロードされたデータにjavascriptを実行することができます。 –

+0

同じドメインにあります。相対URIを使用できますか?コントローラ/アクション/ id/53423など? –

-1

これも可能です。何が(私はこれを自分で試していない)仕事をする必要がありますページ上に隠されたIFRAMEを作ることです。次に、取得する必要のあるURLにsrcを設定し、DOMを使用してIFRAMEのコンテンツにアクセスします。あなたに不明な点があればコメントしてください。

+0

あなたはjQueryを使用していません –

+0

これはAJAXのためのものです。 iframeは必要ありません。また、誰もがクロスドメインコンテンツで動作すると考えているのであれば、それも間違っています。 –

+0

私はjQueryを広範囲に使用しました.AJAXライブラリではありません。そして、もしあなたが元の投稿を読んだら、「誰かがそれが可能なことがあれば教えてもらえますか?彼はそれが可能かどうかを知りたがっていました(それは私が反応していた部分でした)。 – machineghost