ExtJS:从JSONP代理获取响应?

时间:2016-10-02 22:25:41

标签: javascript json extjs proxy

我有以下商店,假设通过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响应?

1 个答案:

答案 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);
        }
});