jquery ajax加载特定的div

时间:2014-02-01 20:22:33

标签: jquery ajax

我有一个问题我无法弄清楚我已尝试过几种不同的方法来尝试缓解我在stackoverflow上发现的问题,但它们并不适用于我。

这是我现在的ajax代码

$.ajax({
        type: 'POST',
        url: 'php/getreviews.php',
        data: {},
           success: function(data) {
               alert(data);
               $('#renow').val( $(data).find('#now').val() );
               $('#rehour').val( $(data).find('#hour').val() );
               $('#reday').val( $(data).find('#day').val() );
           }
    });

getreviews.php页面有3个它返回的div。我只是加载所有三个但是它们在页面的单独部分所以我需要从返回到特定div的加载单个div

我也试过这些方法

$('#renow').val( $(data).html().find('#now').val() );
$('#renow').html( $(data).find('#now').val() );

我确实在警报中打印了div,所以我知道它正确地返回...

更新: 如果我使用$('#renow')。html($(data).html());我得到插入的第一个div元素

4 个答案:

答案 0 :(得分:2)

find更改为filter(在动态创建的元素中进行查询),将val更改为html$('#renow').val( $(data).find('#now').val() );

           $('#renow').html( $(data).filter('#now').html() );
           $('#rehour').html( $(data).filter('#hour').html() );
           $('#reday').html( $(data).filter('#day').html() );

如果你想用html获得整个div,试试这个:

           $('#renow').html( $(data).filter('#now').get(0).outerHTML );
           $('#rehour').html( $(data).filter('#hour').get(0).outerHTML );
           $('#reday').html( $(data).filter('#day').get(0).outerHTML );

答案 1 :(得分:0)

由于您提到过,数据包含<div>8</div>

$(data).find('#now').val()  // will not work

您不能将val()用于div元素,而是使用.text()

$(data).find('#now').text()

更新

基于新数据值

<div id="now">8</div> <div id="hour">0</div> <div id="day">0</div>

试试我的以下代码

$('#renow').html( $($(data)[0]).text() ) );
$('#rehour').html( $($(data)[1]).text() ) );
$('#reday').html( $($(data)[2]).text() ) );

原因:我怀疑data持有string数据类型中的html元素

data = '<div id="now">8</div> <div id="hour">0</div> <div id="day">0</div>';

答案 2 :(得分:0)

如果标有ie divs的{​​{1}}为#renow标签且未输入,请使用html()而不是val()

<div>

答案 3 :(得分:0)

尝试将.val之后的.find()更改为.html()

否则,从最初的注释中,数据包含HTML,但是被视为字符串。您需要先将字符串解析为HTML节点。这可以使用var nodes = $.parseHTML(data)

完成

http://api.jquery.com/jquery.parsehtml/

编辑:

会使你的代码像这样:

success = function(data) {
           var nodes = $.parseHTML("<div>"+data+"</div>");

           $('#renow').html( $(nodes).find('#now').html() );
           $('#rehour').html( $(nodes).find('#hour').html() );
           $('#reday').html( $(nodes).find('#day').html() );
       }

http://jsfiddle.net/ZLmPV/

问题在于您的HTML没有包含在任何内容中,您只能在父节点上使用.find(),其中没有。因此"<div>"+data+"</div>"是必要的。

还应该提到的是,这是将数据从PHP传递到客户端的一种非常糟糕的方式。您应该使用JSON。 (当我刚开始的时候,我也犯了这个错误)