Комментарии отображаются дважды при публикации через AJAX, но появляются только один раз при перезагрузке страницы - PullRequest
0 голосов
/ 05 мая 2011

Я использовал следующие коды, чтобы добавить комментарий к сообщению и отобразить его, не обновляя страницу, но каким-то образом он отображает комментарий дважды, а не один раз, но сохраняет его только один раз в базе данных. Когда я обновляю страницу, она отображает каждый комментарий только один раз, поэтому, я думаю, проблема в «ответе ajax». Вот коды, спасибо за любую помощь.

JavaScript:

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"; 

Я специально не читаю комментарий из базы данных, я просто публикую его обратно на странице.

1 Ответ

1 голос
/ 05 мая 2011

Вы, вероятно, должны добавлять комментарий только тогда, когда состояние xml_http равно 4. Попробуйте это так:

function addComment(pid) {
    var url;
    var comment = document.getElementById("comment").value;
    var 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 = function() {
        if (xml_http.readyState==4) {
            appendComment(xml_http.responseText);
        }
    };

    xml_http.open("GET", url, true);
    xml_http.send(null);
}

function appendComment(commentHTML) {
    $("#comm").append(commentHTML);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...