2010-12-13 8 views
7

私はajaxでhtmlを読み込みます。結果をjqueryオブジェクトにロードします。私はそれを試みたが、それはnullを返します。これどうやってするの? doctype、head要素、body要素を含む完全なページがあります。jqueryで完全なhtmlページを解析します

var test = $(result); //result contains html code 
alert(test.html()); //returns null 

この機能でデータを読み込みます。

function ajaxLoadContent(element) { 
    $.ajax({ 
     url: "url to the page", 
     type: "GET", 
     timeout: 5000, 
     datattype: "html", 
     success: function(result) { 
     //handler 
     }, 
    }); 
    return false; 
+0

結果はおそらく単なる文字列 – hunter

+0

であるあなたが 'result'にデータを取得する方法を示しすることはできますか?また、 'alert(result);'警告でhtmlを表示しますか?そのような変数にhtmlをダンプするだけで自動的に.html()関数がhtmlを返すことはありません。結果変数はすでにhtmlになっている可能性があります。 – Josh

+1

結果を印刷してみませんか?これはテキストでなければなりません。 – WaiLam

答えて

45

$(String)のインターン実装はheadbodyタグを含むjQueryオブジェクトを構築することはできません..です

それはしばらく前ですが、多分あなたはまだそれに興味を持っています。それは単純にそれらを無視して、内部のすべての要素を上に移動します。あなたの文字列は、例えば

<html> 
    <head> 
    <meta ...> 
    </head> 
    <body> 
    <div id="a"/> 
    </body> 
</html> 

ある場合

だから、結果のjQueryオブジェクトはbody様jQueryオブジェクトは、本文の内容以外のすべてをカット取得するための2つの要素

[<meta ...>, <div id="a" />] 

の配列となりますjQueryに渡す前に:

body = '<div id="body-mock">' + html.replace(/^[\s\S]*<body.*?>|<\/body>[\s\S]*$/ig, '') + '</div>'; 
var $body = $(body); 

ected ..例えば

$body.find('#a') 

お役に立てば幸いです。..

+2

この回答はなぜ受け入れられていませんか?頭痛の種から私を救いなさい。ありがとう! – Xaver

+3

なぜjqueryは頭と体を解析できないのですか? – nbrustein

+0

HTML上でregexを使用するためのInsta-downvote。 –

2

テストは単なるHTMLの文字列であるので、あなたは、単にコンテンツを表示するには、この操作を行うことができ

alert(result); 

、あなたが要素にそれをバインドしたい場合は

$("#myDiv").html(result); 
+0

私は戻り値にいくつかのjquery機能を使用できるようにします。 –

+1

結果は単なる文字列なので、jQueryとやりとりする前に結果をページに配置する必要があります。 – hunter

+0

私が推測する隠されたiframeに置く必要があるよりもMzz。それは厄介です。外出先のソリューションを設計する方がよいでしょう。 –

-1

試してみてくださいload jQueryオブジェクトのメソッド:http://api.jquery.com/load/

サーバーからデータをロードし、返されたHTMLを 要素に置き換えます。

alert(result.html()); 

result.appendTo("body"); 

レッツDOMに追加:

+0

この回答の著者は何かにあるかもしれません。 HTMLの文字列全体を 'data:' urlに変換し、その上に$ .ajax()を呼び出すことは、唯一の信頼できる方法かもしれません。 –

1
function ajaxLoadContent(element) { 
$.ajax({ 
    url: "url to the page", 
    type: "GET", 
    timeout: 5000, 
    datattype: "html", 
    success: function(data) { 
    var result = $(data); 
    }, 
}); 
return false; 

あなたは今(それを覚えて、まだDOMに追加されていない)、このような結果を呼び出すことができるはずですこれはあなたのために働くかどうか私は知っている。

+1

いいえ、それは頭、ボディータグ、さらにはdoctypeを含んでいるhtmlになってから動作しません。 –

+0

okこれを次のように変更します。 var result = data; $( "html").html(result); 動作するかどうか教えてください。 –

+0

私は頭の要素にもアクセスできます。この作品はボディー要素とタイトル要素のみです。 –

関連する問題