2011-07-29 13 views
2

HTML:jQuery.load()レスポンスからbody要素のフォームを取得する方法は?

<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <div class="mainContainer"> dgdhgdhgd 
      <div class="header"></div> 
      <div class="navigation"></div> 
      <div class="content"></div> 
      <div class="footer"></div> 
     </div> 
    </body> 
</html> 

のjQuery:

<script type="text/javascript"> 

     $(function() { 
      alert("hsahdjkha"); 
      $('#form1').append('<span id="result" ></span>'); 

      $('#result').load('sageframetemplating/layout.html', function() { 
       alert('Load was performed.'); 
       $('#result').find('body').html(); 
       alert($('#result').html()); 
       test(); 
      }); 

     }); 

     function test() { 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/Result", 
       data: "{ result:'" + $('#result').html() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(response) { 
        alert("Wa hooooooooo"); 
       }, 
       error: function() { 
        alert("error"); 
       } 
      }); 
     } 

    </script> 

私はHTMLの唯一の身体の部分をキャッチしたいが、私は得る:

<title></title> 
<div class="mainContainer"> dgdhgdhgd 
    <div class="header"></div> 
    <div class="navigation"></div> 
    <div class="content"></div> 
    <div class="footer"></div> 
</div> 

だけ身体の部分をキャッチするためにどのように可能?

+0

あなたのコードに何もidの結果やform1もありません。 –

+0

@keith nopちょうどhtmlページの上にあり、本体部分のみを検索しようとしています –

+0

'sageframetemplating/layout。 html' – toopay

答えて

2

問題は、<body><head>タグを含むHTMLブロックをページに挿入しようとしていることです。

ページ内に複数のタグ<body>を置くことはできません。表示される出力はそのままになります。

代わりに、$.get()を使用してデータをページに直接ダンプしないようにして、データをページに挿入する前に解析してください。

$.get('sageframetemplating/layout.html', function(data) { 
    var parsedData = $(data).find("body").html(); 
    $("#result").html(parsedData); 
}); 

私は私の最後にテストなしでこれを書いたことを認めます。したがって、自分で構文をクリーンアップする必要があります。

EDIT html() docsから

このメソッドは、XML文書では使用できません。

大変です。

dataオブジェクトは、本当に私たちがそれを周りハックとNodeList上で私たちの手を得ることを可能にする方法getElementsByTagName()を持ってDocumentオブジェクトです。私たちは、リスト内の最初の項目にアクセスする場合、我々はNodeを得る:

var node = data.getElementsByTagName("body")[0] 

この時点で、我々は結果を抽出することができます。

$("#result").append($(node).children()) 

この汚い、汚いハックが何をしたいあなたを取得しますこの非常に特定のシナリオでは、

ページにスクリプトが含まれている場合、注意してください。

+0

私はparseddataを取得していますが、データが来ています..私は$(データ)が動作していません....他のアイデア?? –

+0

@Shreeさて、私たちはそれをデバッグしようとすることができます。変数のケーシングとスペルが正しいかどうかを確認してください。parsedData:2 d、1つのキャプチャ'警告(データ);を入れてください:そこにはドキュメントオブジェクトがありますか? – Henry

+0

@Henaryだけでなく、ドキュメントobj私は全体のHTMLを持っています。警告(データ);うまく動作しますが、問題はデータがオブジェクトではないことですthatsなぜ$(data).find( "body").html(); nullを返します。 –

関連する問題