2012-04-26 107 views
0

我从字面上刚刚发现了Node.js,我已经做了太多的阅读,它让我的头受伤。我有节点服务器启动并运行。我在节点服务器上有一个写入文本文件的.JS文件。我很想看到只有一个变量(名称)从我的Javascript应用程序传递到运行Node.js的服务器,以便日志文件得到更新。从我读过的AJAX是做到这一点的最佳方式。有人能让我用正确的方向去做一个小代码示例,了解如何做到这一点?使用AJAX POST到节点服务器

服务器正在运行的节点

var fs = require('fs'), str = 'some text'; 
fs.open('H://log.txt', 'a', 666, function(e, id) 
{ 
    fs.write(id, str + ',', null, 'utf8', function(){ 
    fs.close(id, function(){ 
    console.log('file is updated'); 
}); 

})上File.js的代码; });

回答

3

这是我会怎么做你所提到的:

做出快速的http服务器,看任何连接的请求变量,并拿到了传入的参数,并编写的文件。

var http = require('http'); 
http.createServer(function (req, res) { 
    var inputText = req.url.substring(1); 
    processInput (inputText); 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Completed.'); 
}).listen(1337, '127.0.0.1'); 

编辑在这里:当然,你仍然需要定义什么是processInput

function processInput (text) 
{ 
    // What you had before 
    var fs = require('fs'); 
    fs.open ('H://log.txt', 'a', 666, function (e, id) 
    { 
     fs.write (id, text + ',', null, 'utf8', function() { 
      fs.close(id, function() { 
       console.log('file is updated'); 
      } 
     } 
    }); 
} 

这样,当你发送请求到

127.0.0.1:1337/write

它会写的字“写”到文件(如果processInput写输入)。

另一种处理方法是使用URI中的参数。有关如何执行此操作的更多信息正好可以找到here at the nodejs api

祝你好运!

+0

嗨Kaushik-感谢伟大的职位。你能说说127.0.0.1:1337/write吗?我不需要以某种方式调用服务器端的.js文件,以便将变量传递给它?对不起,我现在正在学习这一点。现在吹我的评论;) – DaBears 2012-04-27 02:35:14

+0

嘿DaBears。当您向节点服务器发出请求时,您可以在'req'对象中获得有关请求的所有信息。 节点的工作方式是它真的只是一个JavaScript跑步者。但是它的强大之处在于它具有'http','net',以及许多其他软件包,可以让您创建高度可扩展的服务器。它非常灵活,但你需要指定很多东西。看看[http请求的制作方式](http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html),你就会明白参数'write'是如何传入的。同时查看最新的编辑。 – 2012-04-27 17:12:48

+0

嗨Kaushik-这开始对我更有意义。对于http请求,我在[javascript]应用程序中添加了来自[link] http://www.websitetoolbox.com/tool/support/117的javascript代码,并将url更改为http:// mynodeserver:8000,并且我获得了成功当我在客户端Web浏览器中打开我的JavaScript应用程序时弹出。接下来,我将您的第一个代码和您发布的修改后的函数添加到.js文件中,并将其保存在节点服务器上。我假设我需要在节点服务器上的cmd提示符下运行该js文件,然后才能通过JavaScript应用程序中的httprequest获取该文件?我收到Sysntax er – DaBears 2012-04-29 00:21:06

相关问题