使用jquery的$ .ajax来获取node.js脚本的输出,而不是它的代码

时间:2012-05-23 13:49:13

标签: ajax node.js jquery

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

我正在尝试在客户端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发出请求时,我想要的输出是:     测试

但我获得了源代码:

var fs = require('fs');

console.log('test');

非常感谢

2 个答案:

答案 0 :(得分: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/');

答案 1 :(得分:0)

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

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

  • 在Node Express的app.get()中...
    1. First arg - 提供您想要的路线(例如'/ mygetdata')。
    2. 第二个arg - 在此回调函数中,调用get_data.js代码
  • 在您的客户端代码中,修改它以请求网址(例如,“http://mywebsite.com/mygetdata”),而不是get_data.js。