javascript - Node JS 返回未定义?

标签 javascript html node.js

我正在使用基本的node.js 介绍脚本,并且我在命令行中传递参数。 我希望这个参数在运行后传递回客户端。我可以传回任何纯文本或值,但无法传回包含相同信息的变量。

<!DOCTYPE html>
<html lang="en">
  <head>
  <meta charset="utf-8"/>
  <title>get test</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js">
  </script>
</head>
<body>
  <h1>Get Test</h1>
  <div id="test"></div>
  <script>
    $(document).ready(function() {
      $.ajax({url: 'http://localhost',dataType: "jsonp",jsonpCallback: "_testcb",cache: false,timeout: 5000,success: function(data) {
          $("#test").append(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert('error ' + textStatus + " " + errorThrown);
        }
      });
    });
</script>
</body>
</html>

这是我的服务器代码:

var http = require('http');
var arr = new Array();
http.createServer(function (req, res) {
  res.writeHead(200);

  // print process.argv
  process.argv.forEach(function(val, index, array) {
    console.log(index + ': ' + val);
    arr[index] = val;
    res.write("Size" + val);
    res.end('_testcb(\'{"Size: \' + val + \'"}\')');
  });


  console.log(arr[2]);
}).listen(80);

所以我的问题是,如何传回对象/变量/数组而不是静态文本?

最佳答案

如果您尝试将数据发送到客户端,则需要将数据序列化为 JSON,以便将值发送到客户端。

例如,要将所有参数发送给客户端,您只需将方法更改为:

http.createServer(function (req, res) {
  res.writeHead(200);

  res.write("_testcb(" + JSON.stringify(process.argv) + ")");
}).listen(80);

这将使data(在客户端)成为进程所有参数的数组。

如果您想传递不同类型的对象,请按照您想要的方式创建变量,然后再次使用 JSON.stringify将数据转换为可以发送的文本。例如:

http.createServer(function (req, res) {
  res.writeHead(200);

  // create an empty object
  var data = {};

  // add a size attribute
  data["Size"] = process.argv[1];

  res.write("_testcb(" + JSON.stringify(data) + ")");
}).listen(80);

这一切的关键是 JSON.stringify方法 - 它允许您将变量转换为 JSON,然后客户端将其解析为数据。

关于javascript - Node JS 返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624069/

相关文章:

javascript - 没有附加到 DOM 的视频应该自动播放吗?

javascript - ui-select 将数组元素显示为下拉列表中的选项

javascript - 从外部 javascript 获取变量以在主体中的脚本 block 内执行

javascript - 我需要帮助来链接 JsViews 模板中的日期对象

javascript - HTML:自动滚动合并表

jquery - 将图像大小增加 10 像素

javascript - Node JS : Running server all the time

javascript - 使用 Marko.js 发出值的正确方法

node.js - FireBase 错误解析错误 : Unexpected token return

javascript - 按类名监听 href 的点击事件