Comment récupérer les données envoyées de angularJS vers nodeJS?

Par emile01, il y a 9 ans


Javascript NodeJS

Bonjour,

J'ai des informations sur l'utilisateur qui sont envoyées depuis angularJS ( collecter depuis un formulaire html) vers nodeJS.
Le probléme que j'ai pas bien récupérer ces données au sien de la fonction nodeJS.

Ce que je fais

-Formulaire html:

<form role="form" enctype="multipart/form-data" name="myForm"> <input type="text" ng-model="UserName" required="required"> <input type="text" ng-model="FirstName" required="required"> <input type="file" ng-model="Image" required="required"> <button type="submit" ng-click="addUser()">save</button> </form> $scope.addUser=function(){ var user ={ UserName: $scope.UserName, FirstName:$scope.FirstName }; console.log("info User: "+user.UserName);//Well recovered data $http.post(url+"/add",$scope.user,$scope.Image) .success(function(data){ $scope.ListUsers=data; }).error(function(err,data){ console.log("error " +err); }); }; app.post("/add",function (req,res) { console.log("data of user: "+req.body); //undefined http.get(url+"/addInfoUsers",req.body,req.Image, function (repsHttp) { //error here var body=''; repsHttp.on('data',function(d) { body += d; }); repsHttp.on('end',function() { try { var user = JSON.parse(body); } catch(e) { console.log('error ', +body); } res.json(user); }); }); });

-API JAX-RS for l'ajout d'utilisateur:

@RequestMapping(value="/addInfoUsers",headers = "content-type=multipart/*") @Consumes("multipart/form-data") public Users AddUser( @FormDataParam("file") InputStream uploadedInputStream, @RequestParam(value="file") MultipartFile fileDetail, HttpServletRequest request, @RequestBody(required=false) Users user){ UM.AddDataUsers(uploadedInputStream,fileDetail,user); }

Merci de m'aider à trouver,

4 réponses

mxmaxime, il y a 9 ans

Hello, je ne connais pas du tout Angularjs donc je ne pourrais pas voir si il y a un problème dans ton code utilisant Angularjs, ceci étant dit, il semblerait que ce soit plus un problème lié à ton utilisation de nodejs.

Pourquoi tu n'utilises pas un micro-framework tels que express ou restify pour te simplifier la vie quant à la communication HTTP ?
Si tu pouvais donner plus de code node ça serait cool car j'ai réellement du mal à comprendre ce que tu fais (car c'est totalement illogique)... Tu utilises la variable app (ce qui pourrait faire penser à expressjs) puis ensuite http (ce qui pourrait faire penser au module node) pour intérsepter les requêtes http *mind blown*.

workfel, il y a 9 ans

Hey,

Dans ta fonction addUser sur ton code angular tu n'envois pas la bonne variable dans ta requête POST.
Tu envois $scope.user au lieu de user.

$scope.addUser=function(){ var user ={ UserName: $scope.UserName, FirstName:$scope.FirstName }; console.log("info User: "+user.UserName);//Well recovered data $http.post(url+"/add",user) .success(function(data){ $scope.ListUsers=data; }).error(function(err,data){ console.log("error " +err); }); };
betaWeb, il y a 9 ans

Salut,

Pourquoi, côté NodeJS, fais-tu une requête HTTP vers une autre route ? C'est vraiment bizarre de faire comme ça.
En relisant ton code, j'ai comme l'impression que tu ne sais pas ce que tu fais. Commence donc par regarder la formation consacrée à NodeJS, cela te permettra déjà de comprendre les bases.

emile01, il y a 9 ans

Merci pour ta correction kalagan, le probléme est résolu :)