【问题标题】:get jquery post data in node.js在 node.js 中获取 jquery 发布数据
【发布时间】:2018-12-11 09:10:29
【问题描述】:

我希望这不是一个愚蠢的问题或重复的问题,但似乎我所看到的每个地方都有不同的答案,我无法让它们中的任何一个工作......

使用 jQuery 和 PHP,我可以执行以下操作在前端和后端之间发送和接收数据 ->

$.post("logic.php", {
    command: command
}, function(data, status) {
    $("#output").html(data);
}); //jQuery (front-end)


if (isset($_POST['command'])) {
    $command = $_POST['command'];
    if ($command == 'about') {
        echo 'about';
    } else {
        echo 'command not found';
    }
} // PHP (back-end)

通信有效并且看起来相当简单。现在,我正在转换为 Node.js,并且很难达到同样的效果。我没有收到任何错误,但它似乎根本没有交流......我尝试了很多不同的东西,但这是我现在所拥有的 ->

$.post("index.js", {
    command: command
}, function(data, status) {
    out(data); /* out is a function i made that puts the data on the page in a nice format */
}); // jQuery (front-end)


var express = require('express');
var bodyParser = require('body-parser')
var app = express();
// Javascript back-end
app.post('/', function (req, res, next) {
    console.log(req.body) ;
}); // Should log command to the console but nothing at all happens

我对 node.js 非常陌生,但想从 PHP 过渡,因为我听说了强大的 AJAX 功能(这是我的应用程序所基于的)...请帮助 :)

【问题讨论】:

  • 您需要在您的应用程序中安装 bodyParser 中间件。了解 Express 的工作原理。
  • @SLaks 他正在使用它。 @OP:你请求index.js,但你需要$.post("/", ...)
  • 你还需要实际运行一个服务器并设置路径。
  • 但是,我不确定您所说的“节点强大的 AJAX 功能”是什么意思... AJAX 是从客户端完成的。 node 的工作方式与 PHP 非常不同。一方面,虽然 express 确实支持静态文件,但其他一切都是通过路由完成的;这基本上意味着从客户端的角度来看,site.com/a/b 很少意味着服务器上的“文件夹 a 中的文件 b”。
  • 您阅读我的第一条评论了吗?你需要$.post("/", ...),因为那是你在服务器端处理的路由。

标签: javascript jquery node.js ajax


【解决方案1】:

您定义了bodyParser,但从不使用它。您必须将其添加到 express 配置中。

app.use(bodyParser.urlencoded());

此后,req.body 将不再是 undefined

【讨论】:

  • 我在其中添加了这一点,但它给了我一个错误“body-parser deprecated undefined extended:提供扩展选项”。它仍然不起作用。我需要具有成功和错误属性的东西吗?
  • @MichaelHoefler app.use(bodyParser.urlencoded({ extended: true }))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多