javascript - 嵌套 json 传入 ajax 调用

标签 javascript jquery json node.js ajax

我必须通过 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/

相关文章:

json - Azure 移动服务 API - Exports.put 导致阿拉伯文本损坏

javascript - 复制对象到数组

javascript - google maps v3 zoom to fit all markers(path) 功能

php - 如何使用电子邮件更新mysql数据库?

javascript - 从 Jquery Ajax 调用 servlet

javascript - 根据字母添加类别

json - Moshi 将 null 反序列化为空列表

javascript - 使用 ajax 和 jquery serialize() 的 POST 请求丢失值

javascript - 在 Karma 单元测试中解决嵌套的 AngularJS promise

javascript - 添加按钮以切换浏览器