我必须通过 AJAX 传递嵌套 JSON,并且示例请求应采用以下格式:
{
'user': {
'email': email,
'password': password
}
}
login(){
var email=document.getElementById('username').value;
var password=document.getElementById('password').value;
var user_details={
'email':email,
'password':password
}
var myString=JSON.stringify(user_details);
var param="{'user':"+user_details+"}";
//console.log(param);
$.ajax({
type:'POST',
url:'/newuser',
data:param,
dataType:"json",
success:function (argument) {
console.log(user_details);
}
})
但这会引发错误。 我也尝试这样做
var user_details={
'email':email,
'password':password
}
$.ajax({
type:'POST',
url:'/newuser',
data:JSON.stringify({'user':user_details}),
dataType:"json",
success:function (argument) {
console.log(user_details);
}
})
但这也没有用。我不断收到内部服务器错误。 与现在相同的服务器端代码是:
app.post('/newuser', function(req, res) {
//console.log(req.body);
var obj=JSON.parse(req.body);
console.log(obj);
我应该做什么?
最佳答案
当您尝试将对象附加到字符串时,您的第一个代码示例很可能会引发错误,这将导致与您需要的输出完全不同的输出。
相反,您可以将整个对象传递给 jQuery,它会为您序列化它。试试这个:
function login() {
$.ajax({
type: 'POST',
url: '/newuser',
data: {
user: {
'email': $('#username').val(),
'password': $('#password').val()
}
},
dataType: "json",
success: function(argument) {
console.log(argument); // note use 'argument' here to get the returned data
}
});
});
如果这仍然导致错误,则错误一定出在您的服务器端代码上。您应该检查响应和/或错误日志以确定问题的原因。
关于javascript - 嵌套 json 传入 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45073645/