0

このプロジェクトでの私の目標は、スクリプトによって出力されたJsonをWebサーバーにロードして、SenchaTouch2のリストにデータを表示できるようにすることです。

私はこのウェブサイトで他の人の質問からの回答を含む無数の例を見てきましたが、それでも私のコードの問題が何であるかを理解できないようです。それは非常に小さなものか、おそらく私が気付いていないルールだと確信していますが、誰かが私を正しい方向に向けてくれることを願っています。

これが私のモデルです:

Ext.define('Sencha.model.Location', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['name','location','open','details']
    }
});

これが私のストアです:

Ext.define('Sencha.store.Locations',{
    extend: 'Ext.data.Store',
    requires:[
        'Sencha.model.Location',
    ],
    config: {
        model: 'Sencha.model.Location',
        storeId: 'Locations',
        proxy: {
      type: 'ajax',
      url : 'http://url/to/locations.php?filetype=.json',
      reader: {
        type: 'json',
      },
      autoLoad: 'true'
    }
    }
});

これが私がそれを表示したいビューです:

Ext.define('Sencha.view.LocationList',{
    extend: 'Ext.List',
    alias: 'widget.LocationList',
    xtype: 'locationlist',
    config: {
        title: 'What\'s Open @CU',
        disableSelection: true,
        itemTpl: '<img src="http://localhost/{open}.png" style="width:16px;height:16px;margin-right:8px;" />{name}<span style="font-size:9pt;margin-left:8px;color:#888;">{location}</span>',
        store: 'Locations',
        onItemDisclosure: true
    }
});

出力されるJSONは次のとおりです(フォーマットの問題が原因でサイレントに失敗する可能性がありますか?)

{
"businesses":
    {
    "name" : "Baker's"
    "location" : "4th Floor Uni Centre"
    "open" : "open"
    "details" : "This is some information."
    }
}
4

3 に答える 3

1

ストアのを追加 rootProperty:'businesses'します。reader: { type: 'json', rootProperty:'businesses' }

于 2012-12-04T05:12:34.060 に答える
1

JSONが無効です。カンマを忘れました:

{
"businesses":
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    }
}

また、複数のビジネスを送信する場合は、JSON形式を次のように変更することをお勧めします。

{
"businesses":[
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    },
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    }
    ...
]
}

次に、nuthanが言ったように、プロキシのリーダーにを追加rootProperty: 'businesses'します。

お役に立てれば

于 2012-12-04T15:29:47.157 に答える
0

http://url/to/locations.php 

sencha touchアプリと同じ場所ですか?そうでない場合は、JsonPプロキシよりも必要です。JsonPは、Jsonデータをコンテキストのような関数にラップして使用可能にします。

于 2012-12-04T10:07:13.313 に答える