3

我正在构建一个小型原型,并且遇到以下问题:

我正在尝试在客户端 jQuery 和服务器端 node.js 之间进行通信;当我向我的 node.js 代码发出 jQuery ajax 请求时,它只给了我代码,而不是代码的输出。

我究竟做错了什么?

client.js 的一部分:

$.ajax({url      : './../includes/get_data.js', 
        success  : function(data) {
          alert('success!');
        },
        error    : function(data) {
          alert('error!');
        }
});  

get_data.js:

var fs = require('fs');

console.log('test');

当我向 get_data.js 发出请求时,我想要的输出是:test

但相反,我得到了源代码:

var fs = require('fs');

console.log('test');

非常感谢

4

2 回答 2

5

你只是要求一个静态的 .js 文件,你根本没有与 Node 交互。如果您想这样做,请创建一个 HTTP 服务器(复制http://nodejs.org/上的示例),将其绑定到端口并写回响应,不要使用 console.log(它只会输出到控制台)。

例子:

将以下文件另存为 app.js,然后在终端中运行它,node app.js然后在端口 1337 上访问 localhost:

var http = require('http'),
    ajaxResponse = { 'hello': 'world' },
    htmlContent;

htmlContent  = "<html><title></title><head>";
htmlContent += "<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>";
htmlContent += "<script>$(function() {$.ajax({url:'/ajax',success:function(data){alert('success!');console.log(data);},error:function(data){alert('error!');}});});</script>";
htmlContent += "</head><body><h1>Hey there</h1>";
htmlContent +="</body></html>";

http.createServer(function (req, res) {   
  if (req.url === '/ajax') {
    res.writeHead(200, {'Content-Type': 'text/json'});
    res.end(JSON.stringify(ajaxResponse));
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(htmlContent);  
  }  
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
于 2012-05-23T14:12:01.730 回答
0

我猜你想在你的服务器(运行节点)上获取某个 URL,然后在你的服务器上执行 get_data.js 中的代码?

如果是这样,请使用 express - 查看http://expressjs.com/api.html#express

  • 在您的 Node Express 的 app.get() ...
    1. 第一个参数 - 提供您想要的路线(例如,'/mygetdata')。
    2. 第二个参数 - 在这个回调函数中,调用你的 get_data.js 代码
  • 在您的客户端代码中,修改它以请求 URL(例如,' http ://mywebsite.com/mygetdata'),而不是 get_data.js。
于 2013-09-06T04:41:32.067 回答