2014-09-10 91 views
0

我現在在ExtJS4中使用折線圖。該圖表基於商店的數據。商店使用'loadRawData()'函數來更改其數據。 熟悉的情況,不是嗎?從字符串中創建JSON

AJAX每10秒發送一次字符串,我需要從這些字符串中構建JSON。我試圖:

success: function(response) { 
    var requestMassive = JSON.parse(response.responseText); 
    var jArray = []; 
       for(var i=0;i<requestMassive.length;i++){ 
        var firstPiece = JSON.parse(response.responseText)[i].date; 
        var secondPiece = JSON.parse(response.responseText)[i].connectCount; 
        var recording = "{'machinesPlayed':"+firstPiece+", 'machinesOnline':"+secondPiece+"}"; 
        jArray.push(recording); 
       } 

       jArray = '['+jArray+']'; 
       store.loadRawData(jArray); 
} 

但它是錯誤的方式。如何正確地做到這一點?

+0

您是如何定義商店和型號的? – pherris 2014-09-10 19:39:14

+0

Ext.define('Connections',{ extend:'Ext.data.Model', fields:['date','connect'] }); – 2014-09-11 18:04:27

+0

var store = Ext.create('Ext.data.Store',{ model:'Connections', data:[ {date:586787897,connect:43}, {date:45345435,connect:56}, ... ] }); – 2014-09-11 18:05:53

回答

1

你可以使用loadData()函數代替loadRawData()loadData()只需要一個對象數組。

success: function(response) { 
    var requestMassive = JSON.parse(response.responseText); 
    var jArray = []; 
     for(var i=0;i<requestMassive.length;i++){ 
     jArray.push({ machinesPlayed: requestMassive[i].date, machinesOnline: requestMassive[i].connectCount}); 
     } 

     store.loadData(jArray); 
} 
+0

它的工作原理!我用它。感謝名單! – 2014-09-11 18:06:34

+0

請檢查此答案旁邊的複選標記,如果它解決了您的問題。 – pherris 2014-09-11 18:55:47

1

我沒有得到你想要達到的目標,但它可以通過這種方式形成。試試看。

var recording = { 
    "machinesPlayed" : firstPiece, 
    "machinesOnline" : secondPiece 
} 
jArray.push(recording); 

OR 
jArray.push({ 
    "machinesPlayed" : firstPiece, 
    "machinesOnline" : secondPiece 
}); 
+0

它也可以!謝謝! – 2014-09-11 18:07:13