JavaScript- "Image not found"除非我刷新页面

标签 javascript node.js

我正在开发简单的聊天应用程序,使用 node.js 作为服务器,使用 HTMLCSSJavaScript 作为客户端,对于每个注册用户,我根据他的电子邮件生成一个头像,对于匿名用户(没有电子邮件),我设置一个默认用户图像。我将用​​户的详细信息保存在服务器的数组中,这样当用户登录时,他们会看到聊天消息,并在其旁边显示用户图像或其头像。

问题是,实时更新消息会显示,但图像不会显示,除非我刷新页面。我确信服务器中保存的图片的url是合法的,否则即使刷新页面也无法显示。

我收到以下错误:

GET /client/undefined" Error (404): "Not found"

编辑

服务器.js:

function addMessage(message) {   
    var m = (message); 
    if (m.email === "" || m.email===undefined) {
        gravatar = "/client/images/user.png";
    } else {
        var userimg= globalVar.usersList.findIndex(function (element) {
            return element.email === m.email;
        });
        gravatar=globalVar.usersList[userimg].gravatar;
    }
    var newMessage = {
        name: m.name,
        email: m.email,
        gravatar: gravatar,
        message: m.message,
        timestamp: m.timestamp,
    }
    globalVar.messagesList.push(newMessage);
}



function getMessages(counter) {
        var messages = [];

        messages = globaVar.messagesList.filter(function (element) {
            return element.id > counter;
        });
        return messages;
    }
...//after checking the url 
     var newMessages = getMessages(counterFromClient);
     response.statusCode = 200;
     response.end(JSON.stringify(newMessages));

在客户端:

getMessages(window.Babble.msgCounter, function (res) {
            var newMessages = JSON.parse(res), i;
            var chatList = document.getElementsByTagName('ol')[0];
            var listItem, contDiv, imageDiv, userImage, msgDiv, ct, tm, btn, spn;
            for (i = 0; i < newMessages.length ; i++) {
                listItem = document.createElement('li');

                contDiv = document.createElement('div');

                imageDiv = document.createElement('div');
                imageDiv.setAttribute("class", "user-image-div");
                userImage = document.createElement('img');
                userImage.setAttribute("alt", "");
                userImage.setAttribute("class", "user-image");
                userImage.setAttribute("src", newMessages[i].gravatar);
                userImage.setAttribute("style", "background: white; border: solid 1px #d7d7d7;");
                imageDiv.appendChild(userImage);

                msgDiv = document.createElement('div');
                msgDiv.setAttribute("class", "message-on-chatboard");
                msgDiv.setAttribute("tabindex", "0");

                ct = document.createElement('cite');
                ct.setAttribute("class", "username");
                ct.innerHTML = newMessages[i].name;

                tm = document.createElement('time');
                tm.setAttribute("class", "time");
                var date = new Date(newMessages[i].timestamp * 1000);
                var hours = date.getHours();
                var minutes = "0" + date.getMinutes();
                tm.innerHTML = hours + ":" + minutes;

                btn = document.createElement('button');
                btn.setAttribute("class", "close");
                btn.setAttribute("aria-label", "delete message");
                btn.setAttribute("tabindex", 0);
                btn.setAttribute("id", "msg" + newMessages[i].id);

                spn = document.createElement('span');
                spn.setAttribute("class", "message-content");
                //console.log(typeof (newMessages[i].message));
                spn.innerHTML = newMessages[i].message;

                msgDiv.appendChild(ct);
                msgDiv.appendChild(tm);

                contDiv.appendChild(imageDiv);
                contDiv.appendChild(msgDiv);
                //append list Item
                listItem.appendChild(contDiv);
                chatList.appendChild(listItem);

            }

function  getMessages(msgCounter, callback) {

        var httpRequest = new XMLHttpRequest();
        httpRequest.onreadystatechange = function () {
            if (httpRequest.readyState === 4) { // request is done
                if (httpRequest.status === 200) { // successfully
                    //console.log(httpRequest.responseText);
                    callback(httpRequest.responseText); // we're calling our method
                }
            }
        };
        httpRequest.open('GET', "http://localhost:8080/messages?counter=" + msgCounter);
        httpRequest.send();
    }

知道为什么会出现这种情况以及如何解决它吗?提前致谢。

最佳答案

没有代码但看到错误很难知道

GET /client/undefined" Error (404): "Not found"

看来您用于获取图像的变量未定义(未定义),因此请先验证一下。

关于JavaScript- "Image not found"除非我刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043116/

相关文章:

JavaScript:无需重新加载页面即可更改语言

javascript - 在 asp.net 中重用 javascript 代码

javascript - await 仅在异步函数中有效 - eval 在异步中

javascript - 如何正确地对用户注册进行电子邮件验证?

javascript - 如何从文件夹及其子文件夹读取文件并写入JSON文件?

javascript - NodeJS 和 HTTP 的语法错误

javascript - Angular2/ typescript : access instance variable from the chaining observable function

javascript - GET 请求不在代码笔中获取数据但在浏览器选项卡上工作

sql - 如何在 include 中插入 Distinct 和 Order?

node.js - 如何设置 travis 以跳过特定 nodejs 版本上的脚本