다음 코드를 사용하여 게시물에 댓글을 추가하고 페이지를 새로 고치지 않고 표시하지만 어쨌든 한 번이 아닌 두 번 표시됩니다. 데이터베이스에 한 번만 저장됩니다. 페이지를 새로 고치면 각 주석이 한 번만 표시되므로 문제는 "ajax 응답"과 같습니다. 여기에 코드가 있습니다. 도움을 주셔서 감사합니다.AJAX를 통해 게시 될 때 댓글이 두 번 표시되지만 페이지 리로드에 한 번만 표시됩니다.
자바 스크립트 :
이function addComment(pid) {
var url;
var comment = document.getElementById("comment").value;
xml_http = getXmlHttpObject();
if (xml_http == null) return alert("Your browser is too old to run this page!");
url = '../auth.php?comment=' + comment + '&pid=' + pid;
url += '&p=' + Math.random();
xml_http.onreadystatechange = commentStatus;
xml_http.open("GET", url, true);
xml_http.send(null);
}
function commentStatus() {
$("#comm").append(xml_http.responseText);
}
PHP : 나는 의도적으로 데이터베이스에서 주석을 읽지 않는
include_once('include/comment.php');
addComment($_GET['pid'], filter($_GET['comment']));
if(empty($_SESSION['pic'])) $pic = "images/silh.gif";
else $pic = "/profile/image.php/{$_SESSION['uname']}.{$_SESSION['pic']}?width=45&cropratio=1:1&image=/profile/pix/{$_SESSION['uname']}.{$_SESSION['pic']}";
echo "<div id='comments'>\n"
."<img src='{$pic}' align='left' style='padding-right:5px' />"
."<span id='bluetxt'>By {$_SESSION['uname']}</span><br />\n"
."<span>Posted Now</span>\n"
."<br /><br /><p style='clear:both'>{$_GET['comment']}</p>"
. "</div><br />\n";
, 나는 단순히 다시 페이지에 게시.
아래로 인해 쓸모 제목의 투표를. 수정 된 제목 :) – James
jQuery를 사용하고 있습니다. 왜 Ajax 함수를 사용하지 않습니까? BTW, 가능한 [XSS 공격] (http://en.wikipedia.org/wiki/XSS) 발견 : * 항상 * 웹 페이지에 사용자 데이터를 출력 할 때'htmlspecialchars' 또는'encodeurl' (유스 케이스에 따라 다름)을 사용하십시오. –
BTW, 당신은 필요없이 전역 변수를 사용하고 있습니다 ('xml_http'). 제발하지 마! 그리고'encodeURIComponent'를 사용하여 쿼리 매개 변수를 적절히 인코딩하십시오. 그리고 아마도 데이터베이스를 업데이트하기 위해'GET' 요청을 사용하지 말아야합니다.'GET' 요청은 멱등수 여야합니다. –