ajax 部分 jQuery で HTML ドキュメントの一部を抽出する




parsehtml (4)

私はHTMLを返すページへのAJAX呼び出しを行い、HTMLの一部を抽出し(jQueryセレクタを使用して)、jQueryベースのJavaScriptでその部分を使用したいと思います。

AJAXの取得は非常に簡単です。 これにより、コールバック関数の "data"パラメータにHTMLドキュメント全体が表示されます。

私が理解していないことは、そのデータを役に立つ方法で処理する方法です。 私はそれを新しいjQueryオブジェクトにラップし、セレクタを使用してfind()を使って信じています)、必要な部分だけを取得したいと思います。 私はそれを持っている私は私の文書に挿入するために別のJavaScriptオブジェクトに渡すだろう。 (この委任は私が最初にjQuery.load()を使用していない理由です)。

私がすべて見るget()の例は、これにバリエーションがあるようです:

$('.result').html(data);

...私が正しく理解すると、返された文書全体が選択された要素に挿入されます。 それは疑わしいだけでなく(これは<head>などを挿入しないのですが)、私が望むものはあまりにも粗すぎます。

これを行う別の方法に関する提案は大歓迎です。


新しい要素loadを使用し、それを関数に渡すことができます:

function handle(element){
  $(element).appendTo('body');
}

$(function(){
  var div = $('<div/>');
  div.load('/help a', function(){handle(div);});
});

例: http://jsbin.com/ubeyu/2 : http://jsbin.com/ubeyu/2


$.ajaxメソッドのdataFilter()パラメータを調べることができます。 彼らはあなたが結果を出す前に操作を行うことができます。

jQuery.ajax


あなたはこのようにすることができます

$.get(
        url,
        {
          data : data
        },
        function (response) {
            var page_content = $('.page-content',response).get(0);
            console.log(page_content);
        }
    )

ここでconsole.logには、応答からの期待/希望部分の内部HTMLが表示されます。 その後、あなたはそれをあなたの望みとして使うことができます


あなたは、 divを作成し、次にこのようなHTMLを置くことができます...

var div = $("<div>").html(data);

...このようなデータをフィルタリングします...

var content = $("#content", div.get(0));

...それを使ってください。

これは、要素を作成して任意のHTMLを入れると危険に思えるかもしれませんが、そうではありません。危険なもの( scriptタグなど)はドキュメントに挿入されたときにのみ実行されます 。 ここでは、データを要素に挿入しますが、その要素はドキュメントには入れられません。 ドキュメントにcontentを挿入するだけで何かが挿入されても、 content内のすべてが挿入されます。





jquery