Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用节点js在服务器中接收表单值_Javascript_Angularjs_Node.js - Fatal编程技术网

Javascript 无法使用节点js在服务器中接收表单值

Javascript 无法使用节点js在服务器中接收表单值,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,我正在使用下面的$http post请求向服务器提交表单 $scope.fileUp = function(){ var formda = new FormData(); for(var key in $scope.formval) { console.log(key, $scope.formval[key]); formda.append(key, $scope.formval[key]) } $http.post(

我正在使用下面的$http post请求向服务器提交表单

$scope.fileUp = function(){
    var formda = new FormData();
    for(var key in $scope.formval)
    {   
        console.log(key, $scope.formval[key]);
        formda.append(key, $scope.formval[key])
    }
    $http.post("/upload",formda, {
        transformRequest : angular.indentity,
        header : {'Content-Type' : undefined }
    }).success(function(data){
        console.log(data)
    })
}
var express = require("express");
var bodyParser = require("body-Parser");
var multer = require("multer");
var methodOverride = require('method-override');
var session = require('express-session');
var app = express();
app.use(express.static(__dirname + "/public")); 
app.use(methodOverride());
app.use(session({ resave: true, saveUninitialized: true, secret: 'uwotm8' }));
app.use(bodyParser.raw({limit: '150mb'}));
app.use(bodyParser.urlencoded({limit: '150mb', extended: true}));
app.use(multer({dest : __dirname + '/public/Epub/'}))
app.post("/upload",function(request,response){
    console.log(request.body)
    console.log(request.files)
    response.json({name : "a"});
})
app.listen(8080);
console.log("server running");
在我的节点服务器上,代码如下所示

$scope.fileUp = function(){
    var formda = new FormData();
    for(var key in $scope.formval)
    {   
        console.log(key, $scope.formval[key]);
        formda.append(key, $scope.formval[key])
    }
    $http.post("/upload",formda, {
        transformRequest : angular.indentity,
        header : {'Content-Type' : undefined }
    }).success(function(data){
        console.log(data)
    })
}
var express = require("express");
var bodyParser = require("body-Parser");
var multer = require("multer");
var methodOverride = require('method-override');
var session = require('express-session');
var app = express();
app.use(express.static(__dirname + "/public")); 
app.use(methodOverride());
app.use(session({ resave: true, saveUninitialized: true, secret: 'uwotm8' }));
app.use(bodyParser.raw({limit: '150mb'}));
app.use(bodyParser.urlencoded({limit: '150mb', extended: true}));
app.use(multer({dest : __dirname + '/public/Epub/'}))
app.post("/upload",function(request,response){
    console.log(request.body)
    console.log(request.files)
    response.json({name : "a"});
})
app.listen(8080);
console.log("server running");
请求和响应工作正常。我收到response.json({name:“a”});对于成功后的post方法的请求

问题出在节点服务器console.log(request.body)上, log(request.files)返回空的{}。如何在post请求中接收表单数据


我在这里做错了什么。我是新的节点js

node.js以JSON格式接收数据。在您要发送的angularjs代码中,formda对象直接发送。您应该在JSON内部发送此对象。例如:

var data = {"formdakey":formda}
现在,您应该将数据对象发送到nodejs,在nodejs中,您可以使用以下代码段检索formda的值:

var formdaval = req.body.formdakey;
尝试此方法,并在您仍然面临问题时报告。

尝试此方法:

$scope.fileUp = function(){
    var formda = new FormData();
    for(var key in $scope.formval)
    {   
        console.log(key, $scope.formval[key]);
        formda.append(key, $scope.formval[key]);
    }
    $http.post({
                method: 'POST',
                url: '/upload',
                headers: {
                    'Content-Type':'application/json'
                },
                data: formda
            }).success(function(data){
        console.log(data);
    });
}
通过添加app.use(bodyParser.json())更改nodejs代码:


还要尽量避免语法错误,因为代码中缺少几个分号。

$http post方法使用then函数而不是success。并在字符串化后发送数据

            $http({
                    url:'/upload',
                    method: 'POST',
     data: JSON.stringify({ userName: user})
                    }).then(function (res) {
                    $log.log(res.data);
                    $log.log(res.data.userFirstName);
                 });

但是你的“表格”不是空的,对吗?是的,它不是空的,所以没有答案最终是正确的?没有被接受或被否决的答案。如果你同时找到了解决方法,那么你应该完全删除这篇文章,因为它不会增加任何价值。