0

データを div に追加しようとしていますが、うまくいきません。PHPは問題ありませんが、エラーを見つけられるかどうか、または機能しない理由を理解するのに役立つ回避策を提案できるかどうかを確認するために、細かい目が必要です。

過去5時間ほど修正しようとしましたが、頭が痛くなりました。

ユーザーは投稿などのステータスにコメントし、それを 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);
4

2 に答える 2

1

何らかのテンプレート システムを使用して、コンテンツを組み立てるすべての大変な作業を行うことをお勧めします。

その場しのぎのJavascriptテンプレートの作成またはJohn Resigのソリューションをご覧ください。

内部の一連のマークアップの構築html()は少し粗雑です。

また、最初の display:none のインライン スタイルがあるdivため、表示されません。

何かが入力されるかどうかを確認するためだけに、関数を削除しようとしましたか

success: function(data){  
   $('#containerid').html('blurb');
}
于 2012-08-26T22:50:23.797 に答える
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'"

また、最後の 6 行目あたりで、属性に=記号がありません。

name"contents"

そして、挿入している最も外側の div にはstyle="display:none;".

于 2012-08-26T22:48:41.883 に答える