我在解析$ .ajax的响应时遇到了问题

时间:2014-01-12 15:42:01

标签: json jquery

我正在尝试修改我的一些旧代码以包含对照片的评论。照片是使用$ .ajax获取的,响应是html。

我的修改是将注释作为json对象获取,然后解析之前获得的html,在适当的位置插入注释。这是我代码的[最新版本](我尝试了很多不同的选择)

$.ajax({
        type:"POST",
        url:"<?php echo $_SERVER['PHP_SELF']; ?>",
        data:"ajax_loadbigthumbs=true&section=<?php echo $_GET['section']; ?>",
        dataType : "html",
        success: function(html){

            jhtml = $(html);

            $.getJSON( "/commentsjson.php?getcomments=true&section=<?php echo $_GET['section']; ?>", function( data ) {

                $.each(data,function(i,item){

                    //alert(item.comment);   <--- this works so I know the data is coming back correctly

                    console.log(jhtml.find('#comments_' + item.photoid).attr("id"));   // this shows 'undefined'

                    jhtml.find('#comments_' + item.photoid).css("display","block").html("<p>" + item.name + " said " + item.comment + "</p>");

                });

                $("#largethumbscontainer").append(jhtml);               
            });


        }
    });

但这不起作用。 console.log行(作为测试)返回'undefined',并且以下行(jhtml.find)没有找到要修改的内容。

2 个答案:

答案 0 :(得分:0)

var $comment = $('#comments_' + item.photoid, jhtml);
if ($comment.length) 
    $comment.css("display","block").html("<p>" + item.name + " said " + item.comment + "</p>");

答案 1 :(得分:0)

我修复了它,买了将html附加到已经存在的元素,然后将注释附加到该元素....

$.ajax({
    type:"POST",
    url:"<?php 
        echo htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8"); 
    ?>",
    data:"ajax_loadbigthumbs=true&section=<?php echo $_GET['section']; ?>",
    dataType : "html",
    success: function(html){

        jhtml = $(html);
        $("#largethumbscontainer").append(jhtml);
        largethumbs = $("#largethumbscontainer");

        $.getJSON( "/commentsjson.php?getcomments=true&section=<?php 
            echo $_GET['section']; 
        ?>", function( data ) {

            $.each(data,function(i,item){

                largethumbs
                    .find('#comments_' + item.photoid)
                    .css('display','block')
                    .append('<p>' + 
                        item.name + 
                        ' said: <span style="font-style:italic;">' + 
                        item.comment + 
                        '</span></p>');

            });
        });
    }
});