Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Node.js服务器数据发送到Javascript客户端?_Javascript_Ajax_Node.js_Express_Pug - Fatal编程技术网

如何将Node.js服务器数据发送到Javascript客户端?

如何将Node.js服务器数据发送到Javascript客户端?,javascript,ajax,node.js,express,pug,Javascript,Ajax,Node.js,Express,Pug,我试图将服务器数据发送到javascript客户端,然后以html(jade)格式输出 问题 一,。我的Js客户端和Html变量(公钥、名称、艺术家、图片、id)为“未定义” 2.不清楚“try”或“catch”条件句的意思(可能这影响了某些东西) 我的研究 我的服务器代码、Javscript客户端或Jade中是否可能存在此问题 Node.js服务器 app.get('/user/:id', function (req, res) { if (!req.user) res.s

我试图将服务器数据发送到javascript客户端,然后以html(jade)格式输出

问题
一,。我的Js客户端和Html变量(公钥、名称、艺术家、图片、id)为“未定义”
2.不清楚“try”或“catch”条件句的意思(可能这影响了某些东西)

我的研究


我的服务器代码、Javscript客户端或Jade中是否可能存在此问题

Node.js服务器

app.get('/user/:id', function (req, res) {
  if (!req.user)
    res.send(err);
  if(req.user) {
    try {
      var id = req.params.id;
      var dbUser = req.user;

      res.send({
        'publicKey': dbUser.publicKey,
        'name': dbUser.name,
        'artist': dbUser.artist,
        'picture': dbUser.picture,
        'id':  dbUser.id
      });

    } catch (e) {
      res.send({'status': 404});
    }
  } else {
    res.send({'status': 403});
  }

});
Js客户端

  var keysCache = {};
  var xhr = new XMLHttpRequest();
  xhr.open('GET', '/user/' + message.userid, true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      var res = JSON.parse(xhr.responseText);

      keysCache[message.userid] = {
        'publicKey': res.publicKey,
        'name': res.name,
        'artist': res.artist,
        'picture': res.picture,
        'id': res.id
      }
      console.log(res.name);
      displayOutput(message);
    }
  };
  xhr.send(null); 
翡翠

 #chat
  (...)
  script.
   window.user = {id:"#{user.id}", name: "#{user.artist}", picture: "#{user.picture}", gtoken: "#{user.gtoken}", eccKey: "#{user.eccKey}"};
  script(src='/javascripts/client.js')

似乎我在所有错误的地方寻找爱情。我没有把这段代码放在这里,因为我认为这不是问题所在,但在记录了从我的服务器启动的每个函数后,我意识到我错了。这是完整的部分代码,第一部分是错误所在

答案/简单课程: 我没有正确调用JSON数据。始终仔细检查JSON数据嵌套

  function displayOutput(message) {
    if(!message) return;
    if(typeof(message.text) === 'undefined') return;

var html = '';

if ('userid' in message && message.userid in keysCache) {

  var signature = message.signature;

  delete message.signature;

  var result = ecc.verify(keysCache[message.userid].publicKey, signature, JSON.stringify(message));

  if(result) {
    html = '<p><img src="'+ keysCache[message.userid].picture +'" class="avatar"><strong>' +  keysCache[message.userid].artist + '</strong><br><span>' + message.text + '</span></p>';
  } else {
    html = '<p><img src="images/troll.png" class="avatar"><strong></strong><br><em>A troll tried to spoof '+ keysCache[message.userid].artist +' (but failed).</em></p>';
  } 

  output.innerHTML = html + output.innerHTML;

} else {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', '/user/' + message.userid, true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      var res = JSON.parse(xhr.responseText);

      keysCache[message.userid] = {
        'publicKey': res.publicKey,
        'name': res.name,
        'artist': res.artist,
        'picture': res.picture,
        'id': res.id
      }
      console.log(name);
      displayOutput(message);
    }
  };
  xhr.send(null); 
}
功能显示输出(消息){
如果(!消息)返回;
if(typeof(message.text)==“undefined”)返回;
var html='';
if('userid'在消息中&&message.userid在密钥缓存中){
var签名=message.signature;
删除消息。签名;
var result=ecc.verify(keysCache[message.userid].publicKey,signature,JSON.stringify(message));
如果(结果){
html=''+keysCache[message.userid].artist+'
'+message.text+'

'; }否则{ html='
一个巨魔试图欺骗'+keysCache[message.userid].artist+'(但失败)。

'; } output.innerHTML=html+output.innerHTML; }否则{ var xhr=new XMLHttpRequest(); xhr.open('GET','/user/'+message.userid,true); xhr.onreadystatechange=函数(){ if(xhr.readyState==4){ var res=JSON.parse(xhr.responseText); keysCache[message.userid]={ “公钥”:res.publicKey, “名称”:res.name, “艺术家”:作为艺术家, “图片”:res.picture, “id”:res.id } console.log(名称); 显示输出(消息); } }; xhr.send(空); }

}

我似乎在所有错误的地方寻找爱情。我没有把这段代码放在这里,因为我认为这不是问题所在,但在记录了从我的服务器启动的每个函数后,我意识到我错了。这是完整的部分代码,第一部分是错误所在

答案/简单课程: 我没有正确调用JSON数据。始终仔细检查JSON数据嵌套

  function displayOutput(message) {
    if(!message) return;
    if(typeof(message.text) === 'undefined') return;

var html = '';

if ('userid' in message && message.userid in keysCache) {

  var signature = message.signature;

  delete message.signature;

  var result = ecc.verify(keysCache[message.userid].publicKey, signature, JSON.stringify(message));

  if(result) {
    html = '<p><img src="'+ keysCache[message.userid].picture +'" class="avatar"><strong>' +  keysCache[message.userid].artist + '</strong><br><span>' + message.text + '</span></p>';
  } else {
    html = '<p><img src="images/troll.png" class="avatar"><strong></strong><br><em>A troll tried to spoof '+ keysCache[message.userid].artist +' (but failed).</em></p>';
  } 

  output.innerHTML = html + output.innerHTML;

} else {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', '/user/' + message.userid, true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      var res = JSON.parse(xhr.responseText);

      keysCache[message.userid] = {
        'publicKey': res.publicKey,
        'name': res.name,
        'artist': res.artist,
        'picture': res.picture,
        'id': res.id
      }
      console.log(name);
      displayOutput(message);
    }
  };
  xhr.send(null); 
}
功能显示输出(消息){
如果(!消息)返回;
if(typeof(message.text)==“undefined”)返回;
var html='';
if('userid'在消息中&&message.userid在密钥缓存中){
var签名=message.signature;
删除消息。签名;
var result=ecc.verify(keysCache[message.userid].publicKey,signature,JSON.stringify(message));
如果(结果){
html=''+keysCache[message.userid].artist+'
'+message.text+'

'; }否则{ html='
一个巨魔试图欺骗'+keysCache[message.userid].artist+'(但失败)。

'; } output.innerHTML=html+output.innerHTML; }否则{ var xhr=new XMLHttpRequest(); xhr.open('GET','/user/'+message.userid,true); xhr.onreadystatechange=函数(){ if(xhr.readyState==4){ var res=JSON.parse(xhr.responseText); keysCache[message.userid]={ “公钥”:res.publicKey, “名称”:res.name, “艺术家”:作为艺术家, “图片”:res.picture, “id”:res.id } console.log(名称); 显示输出(消息); } }; xhr.send(空); }

}

我的Js客户端和Html是“未定义的”-这是什么意思?你是说当你在地址栏中键入HTML文档的URL时,浏览器只是在视口中呈现单词
undefined
?我不知道“try”或“catch”条件是什么意思-它们是JavaScript的基本部分。你试过了吗?@Quentin My bad我更新了我的问题,谢谢你的Js资源。你使用的是mean stack吗?express?尝试在浏览器中打开
/user/:id
,然后发布结果My Js Client&Html是“未定义的”-这是什么意思?你是说当你在地址栏中键入HTML文档的URL时,浏览器只是在视口中呈现单词
undefined
?我不知道“try”或“catch”条件是什么意思-它们是JavaScript的基本部分。你试过了吗?@Quentin My bad我更新了我的问题,谢谢你的Js资源。你使用的是mean stack吗?express?尝试在浏览器中打开
/user/:id
,然后发布结果