Sencha touch XML ответ на JSON - PullRequest
       23

Sencha touch XML ответ на JSON

2 голосов
/ 24 ноября 2011

Я недавно начал проект в Сенча, касающийся существующих веб-сервисов. Будучи очень новым для этой технологии, я сталкиваюсь с определенными проблемами при выполнении некоторых функций.

Проблема Я должен позвонить в службу входа в систему, и запрос идет как:

http://domain.sub.com/Service.asmx/LoginService?body={"Username":"maj@smaj.com","Password":"p12345","Token":122112321123212123,"Method":"Login","LabId":"(null)","Hash":"fr3f33f3334348u8yy8hfuhdu8bdy7y89u89x8998c89789c87d78r9","DeviceType":"iPhone Simulator","DeviceId":"91BF3299-A94C-5AD3-9C35-A5C9BBBB6AA8","ApplicationType":"iPhone","Id":"998390494"}

но ответ приходит в формате XML как: РЕПЛИКА:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://domain2.sub2.com/MobileWebService/">{"Id":"null","Message":"Logged In.","Status":true,"LoggedIn":true}</string>

Я должен проанализировать этот xml для json, чтобы получить: {"Id":"null","Message":"Logged In.","Status":true,"LoggedIn":true} из ответа.

затем используйте Status, LoggedIn и Id для проверки входа в систему.

Моя идея Я не уверен, правильно ли это, я пытаюсь создать два магазина, xmlStore и JsonStore.

??

  • Как я буду хранить ответ xml внутри строки.
  • Как я передам эту строку в Json Store (по адресу url?)

Я могу показаться очень наивным, но это моя проблема;)

Пожалуйста, руководство.

EDIT:

Я понял, что я занимаюсь междоменным запросом. это то, что вызывает проблемы или путаницу. Как с этим справиться, если у меня не было междоменных запросов?

1 Ответ

1 голос
/ 06 декабря 2011

Если вы делаете междоменные запросы, используйте scripttag в вашем прокси вместо ajax. Вот пример json

ех.

mApp.stores.onlineStore = new Ext.data.Store({
 model: 'XPosts',
 proxy: {
           type: 'scripttag',
           url : 'http://domain.com/data.json',
           reader: new Ext.data.JsonReader({
               root: 'pages'
           }),
            timeout: 3000,
        listeners: {
            exception:function () {
                console.log("onlineStore: failed");
            },
                success: function(){
                    console.log("onlineStore: success");
                }
            }
       },
    autoLoad: true
 });

Автономный магазин:

mApp.stores.offlineStore = new Ext.data.Store({
    model: 'XPosts',
    proxy: {
        type: 'localstorage',
        id: 'appdata',
        reader: new Ext.data.JsonReader({
            root: 'pages'
        })
    },
    autoLoad: true
});

Затем в вашем запуске:

this.stores.onlineStore.addListener('load', function () {
       console.log("onlineStore: online");
       mApp.stores.offlineStore.proxy.clear();
        console.log("offlineStore: cleared");
        this.each(function (record) {
            console.log("offlineStore: adding record");
           mApp.stores.offlineStore.add(record.data)[0];
       });
       mApp.stores.offlineStore.sync();
        console.log("offlineStore: synced");
        mApp.stores.offlineStore.load();
    });
    this.stores.onlineStore.load();

Может быть некоторые ошибки, так что заранее предупрежден!

...