【问题标题】:nested json pass in ajax callajax调用中的嵌套json传递
【发布时间】:2017-12-17 19:46:37
【问题描述】:

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

我该怎么办?

【问题讨论】:

  • 错误信息说什么?
  • 内部服务器错误@Endless

标签: javascript jquery json node.js ajax


【解决方案1】:

当您尝试将 Object 附加到字符串时,您的第一个代码示例很可能会引发错误,这将导致输出与您需要的完全不同。

相反,您可以将整个对象传递给 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
    }
  });
});

如果这仍然导致错误,则错误必须与您的服务器端代码有关。您应该检查响应和/或错误日志以确定问题的原因。

【讨论】:

  • jquery 允许你通过数据传递嵌套的 json 吗?
  • 绝对是的。请注意,这与 jQuery 无关,它是 JSON 标准。
  • @Rory 可能是你必须对 json 进行字符串化
  • @azad 不,jQuery 为你做到了
  • 我也收到了错误@RoryMcCrossan。后端还没有任何内容。
猜你喜欢
  • 2013-01-30
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2015-08-14
  • 2018-06-24
相关资源
最近更新 更多