2014-07-21 59 views
0

以下jQuery ajax方法調用返回json格式數據的node.js應用程序。我沒有檢查控制檯,並以這種格式無法從nodejs應用程序接收JSON數據?

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

返回JSON然而,當我嘗試使用密鑰名稱我得到「未定義」在控制檯上訪問的元素?

的NodeJS

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

jQuery的阿賈克斯

$.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); 
     } 
    } 
    }); 
+0

數據不是一個數組。你爲什麼要把它當作一個循環呢?如果它是一個,你爲什麼要使用for循環? –

回答

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 
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); 

    } 
}); 
0

你似乎在處理數據變量作爲對象的數組,其中包含您指定的鍵。我猜你會喜歡做的事是這樣的:

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

還是什麼?

相關問題