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-1with .find(),它就会返回undefined

这与jQuery api页面中的最后一个示例几乎相同:http: //api.jquery.com/jQuery.post/

这是托管在我的网站上的完整(非)工作示例,其中包含一些console.log()代码:

表格: http ://www.peixelaranja.com.br/tmp/post.php

我几乎尝试了任何方法:将 dataType 作为第四个参数传递,使用$.ajax()而不是.post(),使用.filter()而不是.find(),不同版本的 jQuery ......似乎没有任何效果。

所有文件都是UTF-8

有任何想法吗?

4

1 回答 1

4

我知道你提到你使用filter而不是find,但是,这应该有效。jQuery 正在剥离html, head,body标记等。一旦完成,#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 回答