滞后于AJAX响应的一部分

戈文·赖(Govind Rai)

我做了一个简单的聊天。它工作正常,但行为不符合预期。当用户提交一条消息时,应该显示该用户的姓名,时间和消息。

碰巧的是,用户名和响应首先出现,并且在稍有延迟(这是滞后)之后,似乎是在插入自己的时间我不知道为什么,特别是因为响应是(或者至少似乎是)整体发送的,并且一旦从服务器发送响应,就不会插入任何内容...

这是聊天的链接您可以输入虚拟用户名和虚拟消息。

以下是重要的代码段:

的PHP

while ($row = $result->fetch_assoc()) {
        $time = date('g:ia', $row['time']);
        echo "<p class=\"message\"><i>{$row['username']}</i> ($time): {$row['content']}</p>";
    }

的JavaScript

ajax.onreadystatechange = function () {
    if (ajax.status === 200 && ajax.readyState === 4) {
        document.getElementById('messagesArea').innerHTML = ajax.responseText;
    }
};
tyteen4a03

罪魁祸首是脚本的这一部分

var content = document.getElementById('messageBox').value;

if ( content === '') {
    return;
} else {
    var ajax = new XMLHttpRequest();
    var username = document.getElementById('signedin').innerHTML;

    document.getElementById('messageBox').value = '';

    ajax.open('POST', 'postmessage.php', true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.onreadystatechange = function () {
        if (ajax.status === 200 && ajax.readyState === 4) {

            // if there are errors echoed from the PHP file
            if (ajax.responseText != "") {
                document.getElementById('mysqliError').innerHTML = ajax.responseText;
                return;
            }

            document.getElementById('messagesArea').insertAdjacentHTML('beforeend', '<p class="message"><i>' + username + '</i>: ' + content + '</p>');
        }
    };
    ajax.send('username=' + username + '&content=' + content);
}

注意这一行: document.getElementById('messagesArea').insertAdjacentHTML('beforeend', '<p class="message"><i>' + username + '</i>: ' + content + '</p>');

您将在没有时间的情况下将消息插入#messagesArea然后,在getRecentMessages以后的版本中,将其设置为从确实有时间的情况下,从输出中获取整个聊天日志displaymessages.php#messagesArea用输出的内容覆盖

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

滤波器响应只返回内容的一部分

Classloader是JVM的一部分还是JRE的一部分?

如何在Golang中将jsonb编码为http响应的一部分

使用翻新时手动解析响应的一部分

缺少GET响应(抓取工具)中的一部分“ set-Cookie”?

如何选择Ajax响应的一部分并将其放入现有的html元素中

尚未设置Ajax POST,但仍会激活php if语句的一部分

如何在Flask中返回图像作为GET请求响应的一部分?

难以在React中显示json响应的一部分

如何获得仅包含POST响应的最后一部分的字符串?

捕获JSON响应的一部分并保存到变量中?

在jmeter JSON响应中提取一部分URL字符串

如何在python中将api响应的一部分转换为完整的json

取弦的一部分,并与另一部分

作为AJAX成功函数的一部分,从API调用发送PHP的JSON响应

如何删除JSON网络响应的一部分?

如何从PHP中提取AJAX响应的一部分

Symfony2,在Ajax查询中调用表单的一部分

使用Ajax更新表/表的一部分

UIScrollView 的一部分不响应触摸

将 AJAX GET 响应(以 JSON 格式)的一部分存储到字符串变量中的问题

cURL - 使用特定的响应头作为文件名的一部分

UIButton 和 UITextField 作为 UIViewController 的一部分不响应

Angular HttpRequest 检索响应的一部分

使用响应头作为 Retrofit 返回对象的一部分

php if语句作为ajax调用的一部分没有失败

从响应中仅获取 Json 对象的一部分

odata.nextLink 不是响应的一部分

使用 python 获取响应正文的一部分