【问题标题】:node.js parse array from jquery ajaxnode.js 从 jquery ajax 解析数组
【发布时间】:2016-07-29 13:14:34
【问题描述】:

我正在节点中创建一个应用程序,它将获取从 jquery Ajax 发送的数组,这是我的代码:

Ember.$.ajax
({
  type:"PUT",
  url:"http://localhost:3000/ids/",
  data:
  {
    ids:[29,12,43],
  },
    dataType: 'json',
});

这是我的 node.js 代码:

router.put('/ids/', function(req, res) 
{
  var data = req.body;
  console.log(data);
  console.log(data.ids);
});

结果是:

{ 'ids[]': ['29', '12', '43' ] }
未定义

我也尝试过迭代它,但是代码:

for (var key in data) {
  if (data.hasOwnProperty(key)) {
    console.log(key + " -> " + data[key]);
  }
}

也不行。在这种情况下我该怎么办?

【问题讨论】:

    标签: javascript arrays node.js


    【解决方案1】:

    'ids[]:' 看起来与JSON 中的密钥格式不正确 - 您确定这是控制台正在打印的内容吗? 在任何情况下,如果您收到的数据是作为字符串输入的(即使字符串看起来像 JSON) - 您可以尝试将其解析为 JSON 对象。这是您的案例的示例:

    router.put('/ids/', function(req, res) 
    {
      var data = req.body;
      //if the string is a properly formatted JSON, this should pass:
      var dataJSON = JSON.parse(data);
      console.log(data);
      //then see if this gives you what you expect
      console.log(dataJSON);
      console.log(dataJSON.ids);
    });
    

    试一试,如果有帮助,请告诉我。

    更新: 看到你收到的数据不是格式正确的 JSON,试着把 PUT 请求改成这样:

    Ember.$.ajax
    ({
      type:"PUT",
      url:"http://localhost:3000/ids/",
      data: JSON.stringify({'ids':[29,12,43]}), 
      dataType: 'json',
    });
    

    试一试,让我们知道控制台在服务器上打印了什么以及问题是否仍然存在。

    【讨论】:

    • 感谢您的支持,不幸的是,这是控制台打印的内容,我已经尝试了代码,但是 put 命令崩溃,我看不到原因,因为它在 put 命令中。我需要以某种方式调试它。看起来这不是正确的格式,这很奇怪,因为 jQuery ajax 一直对我有用。
    • 我明白了,请尝试将您发送的数据更改为正确的 JSON 字符串。我已编辑答案以包含此部分 - 尝试一下,如果有帮助,请告诉我。
    • 我想我找到了答案,但没有你的帮助我不会做到这一点,我写了一个简单的解析器,它不是很好。我认为这不是最好的解决方案,但它确实有效。 var parsing = data.replace("ids[]",""); var parsing2 = parsing.replace(/:/g,'');
      var parsing3 = parsing2.replace(/"/g,""); var parsing4 = parsing3.replace(/[{()}]/g, ''); var parsing5 = parsing4.replace(/[\[\]']+/g,''); var splitting = parsing5.split(","); 结果结果是一个带有数字的数组
    • 太好了。 JSON 解析是 Web 应用程序中的一项常见任务,我真的认为您应该投入一些时间来确保发送的数据是 JSON,并且您不必像以前那样进行自己的解析。如果这能解决您的问题,那就太好了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多