如何将数据从node.js传递给html?

时间:2017-08-05 06:21:13

标签: html json node.js

这是我的nodejs

var http = require('http');   
var request = require("request");

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('Hello World!');
}).listen(8080);
console.log("welcome");

request("https://cognitive/myurl/w1/monitor/mystatus", function(error, response, body) {
 console.log(body);
 var mydata = body;
});

如何将此mydata传递给html? Mydata将包含JSON。我想从那个JSON打印表。如果是app.get我可以通过ajax调用。我是nodejs的新手,如果有人知道请帮忙!

4 个答案:

答案 0 :(得分:0)

  

如何将此mydata传递给html? Mydata将包含JSON。我想要   从那个JSON打印表。如果是app.get我可以通过ajax调用。   我是nodejs的新手,如果有人知道请帮忙!

假设您使用JQuery。您需要在HTML文件中附加一个偶数处理程序,它会在触发时触发$ .get()请求。将您的网址添加到$ .get调用中的数据并对其执行操作。

$('.my_selector').click(function(){
   $.get('http://MY_SERVER_ADDR:MY_PORT/data', {}, function(data){
        console.log(data)
   });
});

从那里,您可以在任何地方插入数据。

答案 1 :(得分:0)

首先,您需要让服务器返回JSON而不是您当前拥有的硬编码字符串。这是一个让你入门的小例子:

const http = require('http');

const server = http.createServer((request, response) => {
  response.end (JSON.stringify ({ a: 'b' }))
}).listen(3000);

这将创建一个响应哈希的JSON表示的服务器{a:' b'当你发送GET' /'请求。

您现在可以执行以下两项操作之一:

  1. 看看像Pug或HBS这样的模板引擎。像Express这样的框架很容易配置开箱即用。如果配置正确,您可以根据数据动态生成视图。
  2. 为您的应用程序编写一个单独的前端,它使用AJAX调用请求您的JSON。最简单的方法是使用jQuery.ajax,但是有完整的前端框架可以促进这种事情。
  3. 简单的前端应用程序如下所示:

    $.getJSON ('localhost:3000/', function (data) {
      $.each(data, function (key, value) {
        $('#myList').append( "<li id='" + key + "'>" + value + "</li>" );
      });
    })
    

答案 2 :(得分:0)

我是这样做的。这应该可以将您的数据从节点服务器获取到html页面。

从网页向节点服务器发出AJAX请求。

function getData (query) {
  query = query || '';
  url = 'http://localhost:3000';

return new Promise(function(resolve, reject) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url + query);

  xhr.onload = function() {
    if(xhr.status === 200) resolve(xhr.responseText);

    else reject(Error(xhr.statusText + 'status : ' + xhr.status));
  }

    xhr.onerror = function() {
      reject(Error('Network Error'))
    }
   xhr.send();
  })
}


getData().then(function(response) {
  //do something with response
    });

在节点服务器上:

var server = http.createServer().listen(3000);
server.on('request' , function (request, response) {

switch (request.method){
    case 'GET':
        handleGET(request, response);
    break;

    case 'POST':
        handlePOST(request, response);
    break;

    default:
        res.writeHead(404);
        res.end();
    break;
}

function handleGET (req, res) {
  res.writeHead(200, {
    'Content-Type' : 'application/json'
    });
  res.write(JSON.stringify(result))
  res.end()
}

答案 3 :(得分:0)

在NodeJS应用程序中使用模板引擎,例如EJS。在EJS的帮助下,您可以将任何类型的数据发送到HTML文件(在本例中为 .ejs 文件)并根据您的要求进行渲染。

有关更多信息,请参阅此链接: https://www.npmjs.com/package/ejs