2013-08-04 322 views
8

我是Node.js的新手,这是我的第一个项目。 我制作了一个名为test.js的node.js文件。它有一个数组说a。从Node.js文件获取数据并将其显示在HTML/JS页面

现在我想制作一个HTML文件,它在按钮单击事件中调用此test.js。然后从该文件获取数据并将其发布到HTML文件的表格中。

我已经写了node.js文件,我可以在console.log(a)上看到结果。但我不知道如何发送这个数组到HTML时,它会要求它。

同时,我搜索并编写了一些代码。请求到达服务器,但我总是从服务器获得错误响应。为什么这样?

客户端 -

function fetch() { 
    $.ajax({ 
    type: 'POST', 
    url: "http://127.0.0.1:8888", 
    data: 'China', 
    datatype: 'json', 
    success: function (data) { 
     alert("hi"); 
     var ret = jQuery.parseJSON(data); 
     $('#q').html(ret.msg); 
    }, 
    error: function (xhr, status, error) { 
     alert("hii"); 
    } 
}); 

服务器端:

http.createServer(function(request, response) { 
    console.log("Request received"); 
    response.writeHeader(200, {"Content-Type": "application/json"}); 
    request.on('data', function (chunk) { 
     console.log(chunk.toString('utf8')); 
        consol.log(result); 
     response.write(JSON.stringify({data : result})); 
    });  
    response.end(); 
}).listen(8888); 

我可以看到中国在console.But我不回去,结果数组返回给客户端。这里的结果是一个数组,我在控制台上获得它的值。只是我没有回到客户端。任何帮助?

+0

您需要将nodeJS作为http服务器运行,并根据请求提供数据。然后,您需要更新您的HTML文件,以便在点击按钮时对您的nodejs服务器进行AJAX调用。 – JohnP

+0

@JohnP:感谢您的评论。你能否详细写下它作为答案。我对node.js –

回答

14

您应该首先设置服务器来为请求提供服务。我为此使用了expressjs - http://expressjs.com/

这将允许您将nodejs作为Web应用程序运行。

安装在JS明确的路线,以满足您的数据 - http://expressjs.com/api.html#express

var express = require('express'); 
var app = express(); 

app.get('/data', function(req, res){ 
    res.send('hello world'); //replace with your data here 
}); 

app.listen(3000); 

打开浏览器,然后输入http://MY_SERVER_ADDR:3000/data,你应该有看到你的输出。

接下来,您需要在您的HTML文件中附加一个甚至是处理程序,它会在触发时触发$ .get()请求。在您的$ .get调用中将以前的网址添加到您的数据中,并使用它进行操作。

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

这应该让你去。

+0

非常感兴趣。我正在尝试编辑的代码。如果我没有得到任何帮助,那么我会尝试使用快递 –

+0

如何在html页面中呈现html页面时响应并传递其他参数中的数据。像这样'res.render('page.html',{list});' – SPnL

+0

@SPnL数据必须作为页面的一部分发送,我认为。您必须将这些数据编码为page.html中的JSON并使用客户端JS读取它 – JohnP

0

经过与同样的问题摔跤后,我发现这正是模板引擎进入节点图片的地方。 EJS为我解决了这个问题,但还有更多可用的功能。 这个article比较了10个模板引擎。

相关问题