javascript - 使用 Node.js 进行 Ajax 请求

标签 javascript ajax node.js

在浏览了 google 和 stack Overflow 后,我还没有找到一种将数据发布到我的 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');
});

旧答案

createServer 自express 3 起已被弃用。您应该使用express 函数。

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

编辑

@robertklep 提到 Express Bodyparser 也已被弃用。

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

npm 安装 body-parser

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

请访问this link获取现在与 Express 本身分离的中间件列表。

关于javascript - 使用 Node.js 进行 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895145/

相关文章:

javascript - 状态改变不影响其他元素

javascript - 如何在 JQuery 中触发选择的事件(按键或模糊)

php - 如何自动刷新有错误的 HTML 页面?

javascript - 如何使用 node.js 修复 Twilio 中无效的内容类型 header ?

javascript - 如何在 HTML 页面中嵌入 PDF?

node.js - 将我的 node.js 应用上线

javascript - 如何确定哪个 Canvas 对象首先完成其随机速度动画

javascript - 字符串匹配 Javascript

javascript - 使用 jQuery 的 each() 方法创建 javascript 对象

ajax - 使用 Ajax 进行 JSF 导航