2014-04-28 114 views
0

我有下面的一段代碼,並試圖用我的web服務返回的json數據填充我的slickgrid。但網格沒有被填充。 返回的數據是空的,因爲我看不到任何警報窗口。下面(JSONData)我的服務調用的Jquery.getJson缺少一些東西?

$(function() 
{ 
    var slickdata = []; 
    $.getJSON("comm/j/abc?action=hi", function(data) 
    { 
     // data is a JavaScript object now. Handle it as such 
     for (var i=0;i<data.length;i++) 
     { 
      alert("slickdata i"); 

      slickdata[i] = 
      { 
       month: data[i].month, 
       teamed: data[i].teamed, 
       net: data[i].net 
      }; 
     } 
    }); 

    alert(slickdata); 

    // dataView = new Slick.Data.DataView({ inlineFilters: true }); 
    grid = new Slick.Grid("#myGrid", slickdata, columns, options); 
    // grid.setSelectionModel(new Slick.RowSelectionModel()); 
}) 

輸出

{ 
    p: { 
     month: "May-2014", 
     teamed: "Y", 
     net: 100000 
    } 
} 

不顯示任何錯誤,在控制檯

+2

首先,不要使用警報進行故障排除。其次,嘗試console.log(數據)。 「slickdata我」是一個文本字符串。 –

+0

'data.length'未定義... –

+1

getJSON是異步的。所以,當你提醒/使用它時,slickdata不會被填充。 –

回答

0

如果你期待一個對象數組(我對你的數據結構有點困惑),那麼你可以使用for循環遍歷它,但根據你的JSON輸出,沒有數組,你只是簡單的得到一個對象。所以你只需要得到這個對象並使用它:

var slickdata = []; 
$.getJSON("comm/j/abc?action=hi", function(data) { 
    myData = data.p; 
    slickdata[0] = { 
    month: myData.month, 
    teamed: myData.teamed, 
    net: myData.net 
    }; 
}); 
0

你確定你是從Web服務得到什麼了?嘗試只是你for循環之前,補充一點:

alert(data.toSource()); 

然後,而不是alert(slickdata);恕我直言,你應該寫alert(slickdata.toSource());因爲它是對象的數組。

0

首先,如果對象沒有長度,則無法基於對象的長度循環對象。在你的情況下,你可以簡單地使用data.p.

slickdata[0] = data.p; // this replaced your entire for loop 

此外,您需要初始化成功回調內的網格,否則它不能訪問slickdata。

$(function(){ 
    $.getJSON("comm/j/abc?action=hi", function(data) { 
     grid = new Slick.Grid("#myGrid", [data.p], columns, options); 
    }); 
}); 

我不知道,但網格是否可以使用該數據。

相關問題