gpt4 book ai didi

angularjs - 使用 $http 将数据从 angularJS 发布到 Express

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:47 26 4
gpt4 key购买 nike

我正在尝试将一些 json 数据从 angularjs 发送到 express/nodejs

AngularJS 代码:

$http({
method: 'POST',
url: 'http://localhost:8000/api/auth',
data: {
name: user,
password: passwd
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.success(function(data, status, headers, config) {
$scope.loginStatus = data;
})
.error(function(data, status, headers, config) {
$scope.lloginStatusogin = data;
});

ExpressJS 代码:

var express = require('express');
var app = express();


var config = require('./config'); // get our config file


var port = process.env.PORT || 8000; // used to create, sign, and verify tokens

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));

app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});

var apiRoutes = express.Router();

apiRoutes.post('/auth', function(req, res) {

console.log(req.body)
});

app.use('/api', apiRoutes);
app.listen(port);

但是在express中,当记录req.body时,我得到了这个对象
{ '{"name":"Nick","password":"password"}': '' }
整个 json 对象被视为具有空值的属性,我不明白或不知道做错了什么。

最佳答案

如果您尝试发送对象,请发送Content-Type: application/jsonapplication/x-www-form-urlencoded 需要 urlEncoded 字符串作为 body 属性。以下两种解决方案都应该适合您,请选择一个。

将 JSON 对象作为正文发送,内容类型为 application/json

$http({
method : 'POST',
url : 'http://localhost:8000/api/auth',
data : {
name: user,
password: passwd
},
headers : {'Content-Type': 'application/json'}
})
.success(function(data, status, headers, config){
$scope.loginStatus=data;
})
.error(function(data, status, headers, config){
$scope.lloginStatusogin=data;
});

 

<小时/>

在正文中发送 urlEncoded 字符串,内容类型为 application/x-www-form-urlencoded

transformRequest 将在发送请求之前根据 data 创建一个 urlEncoded 字符串。

$http({
method: 'POST',
url: 'http://localhost:8000/api/auth',
transformRequest: function(obj) {
var str = [];
for(var p in obj) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
data: {
name: user,
password: passwd
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.success(function(data, status, headers, config){
$scope.loginStatus=data;
})
.error(function(data, status, headers, config){
$scope.lloginStatusogin=data;
});

关于angularjs - 使用 $http 将数据从 angularJS 发布到 Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com