gpt4 book ai didi

ajax - 通过ajax将嵌套对象发布到nodejs服务器返回未定义

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

我已经尝试解决这个问题几个小时了,但我似乎找不到问题的原因。

在客户端 Javascript 上,我通过 ajax 将嵌套对象发布到我的后端 Nodejs 服务器。 ajax 看起来像这样:

$.ajax({
type: "POST",
url: "/user/save",
data: {
"account": {
"username": $signupForm.find("input[name='register_username']").val(),
"email": $signupForm.find("input[name='register_email']").val(),
"password": $signupForm.find("input[name='register_password']").val(),
"plan": subscription
},
"stripe": stripeResponse
},
dataType: "json",
beforeSend: function(){
$.fn.showLoading();
},
success: function(data){

}
});

然后我在我的routes/index.js 中发现了这个

router.post('/user/save', function(req, res){
var post_data = req.body;
console.info(post_data);

var account = post_data.account;
var card = post_data.stripe;

console.log(account);
console.log(card);

// Rest of code...

现在的问题是,由于某种原因,post_data.accountpost_data.stripe 都返回为未定义。 post_data 本身确实返回数据。

我还尝试使用 JSON.stringify 从 ajax 发送数据,但效果不佳。

我还需要 body-parser 并在 app.js 下使用

我看不出我的问题出在哪里。为什么我的数据未定义?

最佳答案

设置contentType: 'application/json; charset=UTF-8' 在您的 ajax() 设置中,否则使用 application/x-www-form-urlencoded,这就是您看到数据按照您的方式格式化的原因。

由于请求发送的是 urlencoded 数据而不是 json(尽管 dataType: "json"),另一个可能的修复方法是设置 extended: true在服务器端的 bodyParser.urlencoded() 中间件选项中。这将使解析器转换 urlencoded 请求数据,以便按照您的预期创建对象和数组。

关于ajax - 通过ajax将嵌套对象发布到nodejs服务器返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764998/

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