繁体   English   中英

使用Node.js的Ajax请求

[英]Ajax requests with Node.js

在环顾了Google和堆栈溢出之后,我还没有找到一种将数据发布到我的Node.js服务器的方法。

我所看到的方法之间似乎存在差异,大概是由于折旧。

我看到的一种方法是此代码:

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

app.use(express.bodyParser());

app.get('/endpoint', function(req, res){
    var obj = {};
    obj.title = 'title';
    obj.data = 'data';

    console.log('params: ' + JSON.stringify(req.params));
    console.log('body: ' + JSON.stringify(req.body));
    console.log('query: ' + JSON.stringify(req.query));

    res.header('Content-type','application/json');
    res.header('Charset','utf8');
    res.send(req.query.callback + '('+ JSON.stringify(obj) + ');');
});

app.post('/endpoint', function(req, res){
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});

我得到错误:

TypeError: express.createServer is not a function
    at Object.<anonymous> (c:\Users\Tobi\Desktop\ChangeLog\ChangeLog\app.js:2:19)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:146:18)
    at node.js:404:3

我读了一些书,发现Express不再附带“中间件”,因此需要将它们分别包含在内-我也收到一条错误消息,说明是这样。

对我的服务器实施Ajax Post请求的当前/最佳方法是什么?

由于您使用JSON我会使用json函数,而不是send这样你的应用程序发送一个正确的内容类型的响应和自动传递的字符串到JSON对象转换。 body-parser还具有处理从客户端接收的JSON的功能。

这是一些示例代码:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

app.post('/endpoint', (req, res) => {
    res.json({
        helloWorld: 'hello world!',
        msg: req.body.message
    });
});

app.listen(3000, () => {
    console.log('server listening at port 3000');
});

旧答案

从express 3开始不推荐使用createServer 。您应该改用express函数。

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

编辑

@robertklep提到过,Express Bodyparser也已弃用。

您现在可以通过NPM将此中间件作为单独的模块获取

npm install body-parser

var bodyParser = require('body-parser');

请访问此链接以获取现在与express本身分离的中间件列表。

下面是关于如何正确定义路由的文档的例子: 快递

在不看示例的情况下阅读问题似乎听起来是对节点的实际请求失败。

这是一个代码块,您可以从中开始并构建其他路由。

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

 app.get('/', function (req, res) {
     res.send('Hello World!');
 });

 app.listen(3000, function () { 
     console.log('Example app listening on port 3000!'); 
});

您可以使用浏览器或邮递员之类的工具验证路由是否正常运行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM