如何form[method="post"]从Node.js中的HTTP POST方法中提取表单数据()和文件上传?
我已经阅读了文档,谷歌搜索,什么也没找到.
function (request, response) {
//request.post????
}
Run Code Online (Sandbox Code Playgroud)
有图书馆还是黑客?
我不明白为什么我们需要body-parser在Express应用程序中,因为我们可以在不使用的情况下获取数据body-parser.它实际上做了什么以及如何做?
在以下Express功能中:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Run Code Online (Sandbox Code Playgroud)
什么是req和res?他们代表什么,他们是什么意思,他们做了什么?
谢谢!
我开始学习node.js并试图找出如何获取POST请求的内容.我想按照这篇文章中的说明进行操作.到目前为止,我已成功安装了node.js(在Windows 7上)并表达,并且能够使我的第一个脚本工作.但是当我尝试使用body-parser时,问题出现了.我安装了它,它似乎在那里
这是node.js脚本的代码
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(express.json()); // to support JSON-encoded bodies
app.get('/', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
res.end('Vous êtes à l\'accueil');
});
app.get('/user/:usernum', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
res.end('You are on page USER with n° : ' + req.params.usernum);
});
// https://stackoverflow.com/questions/5710358/how-to-get-post-a-query-in-express-js-node-js
app.post('/adonis', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
console.log(req.body.title);
// res.write(JSON.stringify(req));
res.end('Hopefully I stringified a POST');
});
// ... Tout …Run Code Online (Sandbox Code Playgroud) 这是我服务器的代码:
var express = require('express');
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());
app.post("/", function(req, res) {
res.send(req.body);
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
Run Code Online (Sandbox Code Playgroud)
从邮递员,我发起一个POST请求到http:// localhost:3000 /并在Body/form-data中我有一个键"foo"和值"bar".
但是我在响应中不断得到一个空对象.该req.body物业总是空的.
我正在尝试将Stripe集成到我的购物车项目中.我无法提交结帐表单.我不断收到此错误消息:"必须提供来源或客户." 要么我没有正确设置我的Stripe帐户,要么我在我的javascript中缺少一些参数.我花了好几个小时才解决这个问题,但仍然无法理解.
这是来自Stripe的日志:
Parsed Request POST Body
{
"amount": "21000",
"currency": "usd",
"description": "Test Charge"
}
Run Code Online (Sandbox Code Playgroud)
响应机构
{
"error": {
"type": "invalid_request_error",
"message": "Must provide source or customer."
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的app.js.
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var expressHbs = require('express-handlebars');
var mongoose = require('mongoose');
var session = require('express-session');
var passport = require('passport');
var flash = require('connect-flash');
var validator = require('express-validator');
var …Run Code Online (Sandbox Code Playgroud) 我正在将 node js 与 express 和 Mongo 一起使用。我有一个简单的程序,它通过单选按钮接收用户设置。我有一个提交按钮,但我不知道如何让它在那里工作。我是否需要一个新的 JS 文件才能将其发送到 mongodb?我想要的只是让我的 html 保存首选项并将它们存储到数据库中。我开始进入哪些步骤?
示例:如果我单击男性并点击提交,我希望将男性这个词保存到数据库中。
<html>
<body>
<form action="">
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我在客户端上使用Backbone.js,在后端使用node.js,我在执行'有限'模型保存时遇到了一些麻烦,如下所述:http://backbonejs.org/#Model-保存
如在示例中,如果我这样做
book.save({author: "Teddy"});
Run Code Online (Sandbox Code Playgroud)
如何使用express.js访问save的参数,即我只想保存到'author'字段?我尝试了以下内容
req.body -> gives ALL parameters of the model being saved, I want only the 'author' field
req.query -> empty
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢!
我最近关于如何构建Express服务器的简单教程(https://codeforgeek.com/2014/06/express-nodejs-tutorial/).
我正在尝试扩展本教程中的代码,以便我可以响应发布请求.我想通过更新一个json文件(恰好填充'用户注释',然后在'/'处重新渲染)来做到这一点
./server.js:
var express = require('express');
var app = express();
// routing configuration
require('./router/main')(app);
// ejs configuration
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
// run the server
var server = app.listen(8080, function(){
console.log('Express server listening on port 8080');
});
Run Code Online (Sandbox Code Playgroud)
./router/main.js(路由器):
var fs = require('fs');
var ejs = require('ejs')
module.exports = function(app){
app.get('/', function(req, res){
var comments = JSON.parse(fs.readFileSync(__dirname + '/../comments.json'));
res.render('index.ejs', comments);
});
app.post('/', function(req, res){
console.log('here in post');
var name = req.body.name;
var …Run Code Online (Sandbox Code Playgroud) 无论req.params/req.query/req.body和$ .post({..}我使用什么组合,我都无法从Express中的Jquery post请求中提取JSON数据.
这是我的jQuery:
$.post("/mail", {email : "s@gmail.com", name : "s@gmail.com"});
Run Code Online (Sandbox Code Playgroud)
我也试过了各种各样的排列:
$.ajax({type: "POST", url: "/mail", dataType :"json", data :
{email : "s@gmail.com", name : "s@gmail.com"}});
Run Code Online (Sandbox Code Playgroud)
这是我的node.js 快递代码:
app.post("/mail", function(req, res) {
console.log(req.body.name);
console.log(req.route);
console.log("params1: " + req.param.params);
....
Run Code Online (Sandbox Code Playgroud)
我已经尝试了无数种方式来访问数据电子邮件和名称而没有成功.如果解决方案是对req.body/req.params的简单修改,我会感到惊讶,但一切皆有可能!数据不存在!(它也没有出现在我的网址中 - 我看到的只有localhost:1337)
req.body/req.params/req.param.params/req.params all返回 undefined,req.query 返回 [].
req.route 返回:
{ path: '/mail',
method: 'post',
callbacks: [ [Function] ],
keys: [],
regexp: /^\/mail\/?$/i,
params: [] }
Run Code Online (Sandbox Code Playgroud)
我试过添加:
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
但是,诚然,我并不完全理解它的目的.任何帮助是极大的赞赏.
节日快乐!//山姆
我正在使用带有Express框架和Rest API的Node JS作为Rest API客户端,我在这里用Chrome浏览器使用邮递员扩展,我可以从选项“ x-www-form-urlencoded”中获取值,但我无法从中获取值“表单数据”我想从“表单数据”选项中获取值,并且还需要上传图像文件。请帮助我实现这一目标。我想从“表单数据”选项以及图像中获取值。请帮我。下面我提到了我使用过的代码。

var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var http = require('http').Server(app);
var mysql = require('mysql');
var util = require('util');
var trim = require('trim');
var validator = require('validator');
var bodyParser = require('body-parser');
var Ingest = require('ingest');
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
var type = upload.single('recfile');
passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
async = require('async');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 express 设计一个简单的浏览器应用程序。我正在尝试提取用户在下拉菜单中选择的值。我也给每个选项一个单独的值,并将表单的方法声明为 /post。但是当我通过进入 尝试他们选择req.body的值时,该值未定义。
我认识到问题可能在于身体解析器浏览类似问题(Example,Example1),但这些问题的解决方案并不能req.body避免未定义。
这是我的应用程序构建代码
const app = express()
app.use(express.static(__dirname, ''));
app.engine('html', require('ejs').renderFile);
app.set('views', __dirname + '/public/views');
app.use(express.urlencoded());
app.set('view engine', 'html');
const server = http.createServer(app);
Run Code Online (Sandbox Code Playgroud)
这是后处理的代码
app.get('/detailed', function(req,res){
res.send(displayDetailed(results, req));
});
app.post('/detailed', function(req,res){
res.send('Hello world');
console.log(req.body);
});
Run Code Online (Sandbox Code Playgroud)
当我在 localhost:8080/detailed 中发布内容时,hello world 返回得很好,但 req.body 为空(返回为 {})。displayDetailed 函数是一个自定义函数,它返回一个 html 字符串,其中包含从来自 google sheet API 的 get 请求中提取的值。由于我没有使用保存的 html 文档,这会影响流程吗?
我正在使用带有express和ejs的nodejs.
互联网上的每一个人都会问如何将价值从节点传递到视图,但相反呢?
例如,我要求我的用户在表单中输入一个字符串,当用户单击该按钮时,如何获取该字符串而不将其作为url中的参数传递?
表格:
<div class="container">
<form style="width:50%">
<div class="form-group">
<label for="text">Name of the product</label>
<input type="text" class="form-control" id="pName">
</div>
<div class="form-group">
<label for="text">Reciever</label>
<input type="text" class="form-control" id="reciever">
</div>
<div class="form-group">
<label for="text">Location</label>
<input type="text" class="form-control" id="location">
</div>
<!-- <div class="checkbox">
<label><input type="checkbox"> Remember me</label>
</div>-->
<button type="submit" class="btn btn-default">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
app.js
var express = require('express');
var app = express();
//ALL GLOBAL VARIABLES
var port = 8080;
app.get('/', function(req, res) {
res.render('index.ejs');
});
app.get('/barcode', function(req,res) {
res.render('barcode.ejs');
});
app.listen(port);
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做: …
node.js ×12
express ×9
javascript ×6
body-parser ×3
mongodb ×2
backbone.js ×1
ejs ×1
html ×1
http-post ×1
jquery ×1
json ×1
post ×1
postman ×1