2

問題を示す簡単な例を作成しました。以下のフォームは、jQueryを使用して別のページに送信します.post()

$('form').submit(function(){

    $.post(
        $(this).attr('action'),
        $(this).serialize(),
        function(data) {
            var ret = data;
            var final_data = $(ret).find('#holder-1').html();
            alert(final_data);
        }
    )
    return false;

})

アクション

<div id="holder-1">
    <h1>Content 1</h1>
</div>

<div id="holder-2">
    <h1>Content 2</h1>
</div>

<div id="holder-3">
    <h1>Content 3</h1>
</div>

ログには、の内容が正常にdata見えることが示されています。しかし、で検索しようとする#holder-1と、 undefined.find()が返されます。

これは、jQuery apiページの最後の例とほぼ同じです:http: //api.jquery.com/jQuery.post/

これが私のウェブサイトでホストされている完全な(機能していない)例でconsole.log()あり、コードに沿っていくつかあります:

フォーム: http: //www.peixelaranja.com.br/tmp/post.php

私はほとんど何でも試しました:dataTypeを4番目のパラメーターとして渡し、$.ajax()代わりに使用し、代わりに使用.post()して、異なるバージョンのjQuery...何も機能しないようです。.filter().find()

すべてのファイルはUTF-8です。

何か案は?

4

1 に答える 1

4

filter代わりに使用したとおっしゃっていましたがfind、うまくいくはずです。jQueryは、、、タグなどを削除していhtmlますheadbodyこれが完了する#holder-1と、階層の最上位になります。

このフィドルは、それが機能することを示してfilterいます。

http://jsfiddle.net/68jEt/

var html = '<!doctype html><html dir="ltr" lang="pt-BR"><head>  <meta charset="UTF-8">  <title>Return Test</title></head><body> <div id="holder-1">     <h1>Content 1</h1>  </div>  <div id="holder-2">     <h1>Content 2</h1>  </div>  <div id="holder-3">     <h1>Content 3</h1>  </div></body></html>';

alert($(html).filter("#holder-1").html());
于 2013-01-18T17:47:49.953 に答える