我有以下商店,假设通过JSONP代理加载数据:
Ext.define('Forecaster.store.WeatherDay', {
extend : 'Ext.data.Store',
model : 'Forecaster.model.WeatherDay',
autoLoad : true,
proxy : {
type : 'jsonp',
method : 'GET',
url : 'http://api.wunderground.com/api/[myAPIKey]/forecast10day/q/11432.json',
root: 'forecast',
dataType : 'json',
success: function (result, request) {
//success
console.log("Sucess!");
console.log(result, request);
}
}
});
从浏览器的网络标签中,我看到响应返回(截断):
Ext.data.JsonP.callback1(
{
"response": {
"version":"0.1",
"termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"forecast10day": 1
}
}
,
"forecast":{
"txt_forecast": {
"date":"5:18 PM EDT",
"forecastday": [
{
"period":0,
"icon":"cloudy",
"icon_url":"http://icons.wxug.com/i/c/k/cloudy.gif",
...more of the response...
但是上面的回调函数似乎没有被执行。我需要做什么才能获得JSON响应?
答案 0 :(得分:2)
代理上没有“成功”配置(参见http://docs.sencha.com/extjs/6.0.2/classic/Ext.data.proxy.JsonP.html)。
在定义商店类之后,您应该创建它的等价,然后调用加载函数。 喜欢这个
var store = Ext.create('Forecaster.store.WeatherDay');
store.load({
success: function (result, request) {
//success
console.log("Sucess!");
console.log(result, request);
}
});