2012-12-09 129 views
3

我在努力理解爲什麼我在Sencha視圖中沒有任何東西。我相信在服務器和Sencha代理之間傳輸的json存在問題。我有一個服務器編碼節點和表達和在Sencha代理閱讀器。但Sencha無法讀取數據。JSON響應:節點服務器和Sencha

服務器端:

app.get('/weather/fulljson',function(req, res) { 
    var obj = {data: [{ from_user: 'world', data: 'inter' }, { from_user: 'world2', data: 'interw' }, { from_user: 'world3', data: 'interw' }]}; 

    jsonP = false; 
    var cb = req.query.callback; 
    console.log(cb); 
    if (cb != null) { 
     jsonP = true; 
     res.writeHead(200, { 
      'Content-Type': 'text/javascript', 
      'connection' : 'close' 
     }); 
    } else { 
     res.writeHead(200, {'Content-Type': "application/x-json"}); 
    } 
if (jsonP) { 
    res.end(cb + "(" + JSON.stringify(obj) + ");"); 
} 
else { res.end(JSON.stringify(obj)); 
} 
)}; 

}); 

煎茶查看:在Chrome

Ext.define('Epic.view.Weather', { 
    xtype: 'graph', 
    extend: 'Ext.DataView', 
    //requires: ['Epic.store.SWeather'], 
    requires: ['Epic.model.MWeather', 'Ext.data.proxy.JsonP'], 
    config: { 
     store: { 
     autoLoad: true, 
     fields: ['from_user', 'data'], 

     proxy: { 
      type: 'jsonp', 
      url: 'http://localhost:3000/weather/fulljson', 
      reader: { 
       type: 'json', 
       rootProperty: 'data' 
      } 
     } 
    } 
    }, 

      itemTpl: '{from_user}' 
}); 

響應:

Ext.data.JsonP.callback1({"data":[{"from_user":"world","data":"inter"},{"from_user":"world2","data":"interw"},{"from_user":"world3","data":"interw"}]}); 

但沒有出現在視圖中。

+0

另外,你需要JSONP類型嗎?你會使用crossite sripting? – Psycho

回答

0

您是否在加載後檢查您的商店?它是否包含您發送的數據?如果是 - 在這種情況下,您的觀點有問題。您可以使用調試器工具並獲取組件並檢查存儲。 你也可以顯示你的模型Epic.model.MWeather?事實上,如果你有模特兒,你不必添加字段到你的商店。

+0

感謝您的回覆。如何檢查商店是否有數據而不使用DataView? – Fatfly

+0

感謝您的回覆。我目前沒有使用該模型。如果我刪除它,沒有什麼改變。爲了檢查商店,你是在談論「資源」選項卡和本地存儲?如果它正在工作,那麼會出現什麼結果? – Fatfly

+0

你可以使用Ext.getCmp('id')和你可以從DOM獲得的Id。 – Psycho