无法从nodejs应用程序接收JSON数据?

时间:2014-07-21 17:42:02

标签: javascript jquery ajax json node.js

以下jQuery ajax方法调用node.js应用程序,该应用程序返回json格式的数据。我确实检查了控制台,它以这种格式返回json

{ "SQLDB_ASSIGNED": 607, "SQLDB_POOLED":285, "SQLDB_RELEVANT":892, "SQLDB_TOTSERVERS":19}

但是,当我尝试使用密钥名称访问元素时,我得到" undefined"在控制台上?

的NodeJS

res.send(JSON.stringify(" { \"SQLDB_ASSIGNED\": "+assigned_tot+", \"SQLDB_POOLED\":"+pooled_tot+", \"SQLDB_RELEVANT\":"+relevant_tot+", \"SQLDB_TOTSERVERS\":"+servertotal+"}"));

Jquery Ajax

  $.ajax({
    url: '/currentdata',
    async: false,
    dataType: 'json',
    success: function (data) {

    console.log(data);

    for(var i in data)
         {
        console.log(data[i].SQLDB_ASSIGNED+"---"+data[i].SQLDB_POOLED+"---"+data[i].SQLDB_RELEVANT+"---"+data[i].SQLDB_TOTSERVERS ); 
         }
    }
  });

3 个答案:

答案 0 :(得分:2)

你的Node.js部分非常奇怪。你正在字符串字符串:

res.send(JSON.stringify(" { \"SQLDB_ASSIGNED\": "+assigned_tot+", \"SQLDB_POOLED\":"+pooled_tot+", \"SQLDB_RELEVANT\":"+relevant_tot+", \"SQLDB_TOTSERVERS\":"+servertotal+"}"));

为什么不呢?这可能就是你在寻找的东西:

res.send(JSON.stringify({
  SQLDB_ASSIGNED: assigned_tot,
  SQLDB_POOLED: pooled_tot,
  SQLDB_RELEVANT: relevant_tot,
  SQLDB_TOTSERVERS: servertotal
}));

然后在回调中就是这样:

data.SQLDB_ASSIGNED; // Here you go

答案 1 :(得分:0)

我不知道你为什么要迭代json的键。你想要这个:

console.log(data.SQLDB_ASSIGNED+"---"+data.SQLDB_POOLED+"---"+data.SQLDB_RELEVANT+"---"+data.SQLDB_TOTSERVERS );

所以代码是:

$.ajax({
    url: '/currentdata',
    async: false,
    dataType: 'json',
    success: function (data) {

        console.log(data.SQLDB_ASSIGNED+"---"+data.SQLDB_POOLED+"---"+data.SQLDB_RELEVANT+"---"+data.SQLDB_TOTSERVERS );

    }
});

答案 2 :(得分:0)

您似乎将数据变量视为对象数组,包含您指定的键。我想你想做的是:

for(var key in data) {
  console.log(key+": "+data[key]);
}

或者什么?