使用Ajax获取数据(放置在div中)

时间:2012-08-26 22:25:43

标签: javascript jquery ajax json

我正在尝试将我的数据添加到div中,但它无法正常工作。 PHP是好的,但我需要一个很好的眼睛,看看他们是否可以发现任何错误或可以建议任何工作,以帮助弄清楚为什么它不工作。

我试图在过去的5个小时左右修理它并绞尽脑汁。

用户对post等状态进行评论,并假设将其添加到div中。就像我的主要地位一样。主要状态的ajax几乎与下面的注释ajax相同..但是注释ahax不是很好玩,并且根本没有插入任何数据。

<script>
$(document).ready(function(){
    $("form#mycommentform").submit(function() {
        var streamidcontent = $('#streamidcontent').val();
        var contents = $(this).children('#contents').val();

        $.ajax({
            type: "POST",
            url: "comment_add.php",
            cache: false,
            dataType: "json",
            data: { streamidcontent: streamidcontent, contents: contents}, 
            success: function(data){  
                $('#containerid').html('<div class="stream_comment_holder" style="display:none;"
                id="comment_holder_'+data['comment_streamitem']+'"><div
                id="comment_list_'+data['comment_streamitem']+'"><div
                id="tgy"></div><div class="stream_comment"
                id="comment_'+data['comment_id']+'" style="margin-top:0px;"><table
                width=100%><tr><td valign=top width=30px><img
                class="stream_profileimage"
                style="border:none;padding:0px;display:inline;" border=\"0\"
                src=\"imgs/cropped'+data['id']+'.jpg\"
                onerror="this.src=\"img/no_profile_img.jpeg\"" width=\"40\"
                height=\"40\" ></a><td valign=top align=left><a
                href="/profile.php?username='+data['username']+'">'+data['first']+'</a><div
                class="commentholder">'+data['first']+'</div><br/><div
                id="commentactivitycontainer"></div></div></table></div></div><div
                class="form"><form id="mycommentform" method="POST" 
                class="form_statusinput"><input type="hidden"  name="streamidcontent"
                id="streamidcontent" value="'+data['comment_streamitem']+'"><input
                type="text" name"contents" id="contents" placeholder="Say something"
                autocomplete="off"><input type="submit" id="button"
                value="Feed"></form></div><div class="stream_comment_holder"
                style="display:;"><div class="like_name"><b><a
                href="profile.php?username='+data['username']+'">You Like
                This</a></b></div></div>');
            }
        });
        return false
    });
});
</script>

发现错误

success: function (data) {
    alert("SUCCESS!!!");
},
error: function (xhr, ajaxOptions, thrownError) {
    alert(xhr.statusText);
    alert(xhr.status);
    alert(thrownError);
}

OK
200
SyntaxError.JSONparse:Unexpectedcharacter

JSON

$json = array();
$check = "SELECT comment_id, comment_datetime, comment_streamitem FROM streamdata_comments WHERE comment_streamitem=".$_POST['streamidcontent']."";
$check1 = mysqli_query($mysqli,$check);
$resultArr = mysqli_fetch_array($check1);
$json['comment_id'] = $resultArr['comment_id'];
$json['comment_streamitem'] = $resultArr['comment_streamitem'];
mysqli_free_result($check1);

$check = "SELECT * FROM users WHERE id=".$_SESSION['id']."";
$check1 = mysqli_query($mysqli,$check);
$resultArr = mysqli_fetch_array($check1);
$json['username'] = $resultArr['username'];
$json['id'] = $resultArr['id'];
$json['first'] = $resultArr['first'];
$json['middle'] = $resultArr['middle'];
$json['last'] = $resultArr['last'];
mysqli_free_result($check1);

echo json_encode($json);

2 个答案:

答案 0 :(得分:1)

我建议使用某种模板系统来完成组装内容的所有艰苦工作。

查看Create a makeshift Javascript templatingJohn Resig's解决方案。

html()内构建那个标记字符串有点粗糙。

您还有第一个div的内联显示样式:无,因此您将看不到它。

您是否尝试过关闭此功能以查看是否有任何内容填充

success: function(data){  
   $('#containerid').html('blurb');
}

答案 1 :(得分:0)

我不知道这是否是唯一的问题,但是你试图在你正在创建的html属性中嵌入引号,例如:

'onerror="this.src=\"img/no_profile_img.jpeg\""'

它将产生这个无效的字符串:

onerror="this.src="img/no_profile_img.jpeg""

你应该嵌入单引号,如下所示:

'onerror="this.src=\'img/no_profile_img.jpeg\'"'

哪会产生:

onerror="this.src='img/no_profile_img.jpeg'"

此外,在大约第六个最后一行,您的属性缺少=符号:

name"contents"

您插入的最外层div有style="display:none;"