Не удается заставить хранилище данных работать в Sencha Touch с помощью прокси-тега сценария и JSONP - PullRequest
0 голосов
/ 14 июня 2011

У меня есть панель, которая должна использовать JSONP из внешнего веб-сервиса.

Модели / VimeoModel.js

rpc.models.VimeoModel = Ext.regModel('rpc.models.VimeoModel', {
    fields: [
        {name: 'id', type: 'int'},
        {name: 'title', type: 'string'}
    ]
});

Вид / VideoView.js

rpc.views.VideoView = new Ext.Panel({
    id: 'VideoView',
    title: "Videos",
    tpl: VimeoTemplate,
    iconCls: "tv",
    dockedItems: [{ xtype: "toolbar", title: "Videos"}],
    store: 'rpc.stores.VimeoStore'
});

магазины / VimeoStore.js

rpc.stores.VimeoStore = new Ext.data.Store({
    id: 'VimeoStore',
    model: 'rpc.models.VimeoModel',
    proxy: {
        type: 'scripttag',
        url: WebService.Url + WebService.Vimeo.Read,
        reader: {
            type: 'jsonp',
            root: 'results'
        }
    },
    autoLoad: true
});

шаблоны / VimeoTemplate.js

var VimeoTemplate = new Ext.XTemplate([
    '<tpl for=".">',
        '<div>',
            '{title}',
        '</div>',
    '</tpl>'
]);

К сожалению, когда страница загружается, данные не заполняются в VideoView.

Запрос WebService выглядит следующим образом
http://rpc.infinitas.ws/Vimeo/Read?_dc=1308067234445&limit=25&callback=stcCallback1001
Возвращается ответ JSONP

stcCallback1001({"results":[{"id":25036464,"title":"Power of A Surrendered Li..."},{"id":25036610,"title":"Child Dedication June 2011"},{"id":24734142,"title":"Power of A Surrendered Li..."},{"id":24884833,"title":"Finance Update June 2011"},{"id":24587711,"title":"Papua, Indonesia Sharing ..."},{"id":24232427,"title":"ICHTHUS: Coming King"},{"id":23868560,"title":"ICHTHUS: Healer"},{"id":23486615,"title":"ICHTHUS: Sanctifier"},{"id":23211649,"title":"ICHTHUS: Saviour"},{"id":23867961,"title":"Elder Announcement re: Br..."},{"id":22998163,"title":"Triumph of Grace: Risen L..."},{"id":23687914,"title":"Triumph of Grace: Reignin..."},{"id":23692076,"title":"KINGDOM now: For Thine Is..."},{"id":23694183,"title":"KINGDOM now: Deliver Us F..."}],"success":true});stcCallback1001({"results":[{"id":25036464,"title":"Power of A Surrendered Li..."},{"id":25036610,"title":"Child Dedication June 2011"},{"id":24734142,"title":"Power of A Surrendered Li..."},{"id":24884833,"title":"Finance Update June 2011"},{"id":24587711,"title":"Papua, Indonesia Sharing ..."},{"id":24232427,"title":"ICHTHUS: Coming King"},{"id":23868560,"title":"ICHTHUS: Healer"},{"id":23486615,"title":"ICHTHUS: Sanctifier"},{"id":23211649,"title":"ICHTHUS: Saviour"},{"id":23867961,"title":"Elder Announcement re: Br..."},{"id":22998163,"title":"Triumph of Grace: Risen L..."},{"id":23687914,"title":"Triumph of Grace: Reignin..."},{"id":23692076,"title":"KINGDOM now: For Thine Is..."},{"id":23694183,"title":"KINGDOM now: Deliver Us F..."}],"success":true});

Когда я запускаю консоль Chrome Javascript, я получаю сообщение об ошибке

Чтение: 1 Uncaught ReferenceError: stcCallback1001 не определено

А вот приложение для постановки, если вам нужно больше информации
http://rpcm.infinitas.ws

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Проблема в возвращаемом вами javascript.Вы выводите обратный вызов дважды.Если вы нажмете на ссылку jsonp в своем вопросе, вы увидите два вызова stcCallback1001.Поскольку обратный вызов удаляется после первого, второй отказывает.

Кстати, вам не нужно указывать callbackParam.

0 голосов
/ 25 марта 2012

Преобразование типа читателя из 'jsonp в' json 'должно вернуть правильный результат.

...