ExpressJS获取post参数和外部javascript函数的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ExpressJS获取post参数和外部javascript函数的用法相关的知识,希望对你有一定的参考价值。
我试图创建一个简单的网页与一些服务器端功能,但不知何故2件事不起作用,因为他们应该工作。
通过html按钮即时运行客户端javascript执行http发布请求。 客户端javascript
httpRequest = new XMLHttpRequest()
httpRequest.open('POST', '/test2')
httpRequest.send(var1,var2,var3,var4);
Server.js
var express = require('express');
var bodyParser = require("body-parser");
var dbFunc = require("./dbFunctions.js");
var app = express();
var path = require('path');
var port = 8888;
//allow to use body-parser
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//allow to use static files
app.use(express.static("public"));
//listen to smth
app.post('/test2', function (req, res) {
console.log("worked");
});
//start server
app.listen(port);
console.log("Server running on port" + port);
我的服务器检测到这个帖子的http请求并执行“console.log”,但我如何从http.request获取参数作为变量?我尝试使用bodyParser但不知何故我的对象总是空的。
另一件事是,我已经创建了另一个Javascript文件(dbFunctions.js)并在服务器文件中实现了它,但如果我尝试运行一个函数(例如dbFunc.test(“hello”))它说“dbFunc.test不是一个功能“。
dbFunctions.js
function DBFunctions(){
function test(a){
console.log(a);
}
}
我也尝试过这样的事情,但这给了我同样的错误。
function test(a){
console.log(a);
}
有人可以给我一个提示或告诉我我错过了什么?
正确答案为:
你发送数据到post请求的方式是错误的,你应该发送qazxsw poi的格式
xhttp.send("val1=val1&val2=val2");
要像HTML表单一样POST数据,请使用setRequestHeader()添加HTTP标头。在send()方法中指定要发送的数据:
httpRequest = new XMLHttpRequest()
httpRequest.open('POST', '/test2')
httpRequest.send(var1=var1&var2=var2&var3=var2&var3=var3);
在你的httpRequest = new XMLHttpRequest()
httpRequest.open('POST', '/test2')
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpRequest.send(var1=var1&var2=var2&var3=var2&var3=var3);
中,使用server.js
来获取这些值。
req.body
app.post('/test2', function (req, res) {
console.log("worked");
console.log(req.body)
});
ANSWER2:
从XMLHttp request example文件中,您应该使用节点js中的模块导出来导出函数。
dbFunctions.js:
dbFunctions.js
你也可以这样做,
var exports = module.exports = {};
exports.test = function(a) {
console.log(a);
};
现在在你的module.exports = {
test: function(a) {
console.log(a)
},
}
server.js
var dbFunc = require("./dbFunctions.js");
dbFunc.test();
所有发布的变量都可以在Node js module exports中找到req.body
。
其次你很可能不从console.log(req.body)
输出test
函数,这就是为什么得到“dbFunc.test不是函数”,因为dbFunction.js
是dbFunc.test
。
注意:正如其中一条评论所述,您需要以正确的方式使用undefined
。它不期望多个参数。
喜欢:httpRequest.send(var1,var2,var3,var4);
请参考:
httpRequest.send("var=var1&var1=var2")
以上是关于ExpressJS获取post参数和外部javascript函数的用法的主要内容,如果未能解决你的问题,请参考以下文章
Angular $http POST 从 ExpressJS 获取 null