首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sencha Touch中的存储从web服务获取xml-数据

使用Sencha Touch中的存储从web服务获取xml-数据
EN

Stack Overflow用户
提问于 2012-01-10 23:22:01
回答 1查看 1.5K关注 0票数 1

我是新来的Sencha,我试着理解它是如何与网络服务一起工作的。下面的代码可以很好地处理我在本地web服务器上托管的xml文件。当我尝试使用公共网络服务时,我什么也得不到。这很奇怪,因为xml文件是完全相同的,只有一个代码字符串是不同的。我的意思是,如果将以下xml-文件托管在web服务器上并将其设置为代理的url,则一切都将正常,数据将显示出来。

这是我的js代码:

代码语言:javascript
复制
Ext.require([
    'Ext.Panel',
    'Ext.tab.Panel',
    'Ext.Ajax'
]);

Ext.application({
    name: 'Sencha',

    launch: function() {
        Ext.regModel('XMLUser', {
          fields: ['ID', 'CUSTOMERID', 'TOTAL']
        });
        var XMLStore = new Ext.data.Store({
            model: 'XMLUser',
            implicitIncludes: true,
            method:'get',
            proxy: {
                type: 'ajax',
                url : 'http://www.thomas-bayer.com/sqlrest/INVOICE/605',
                //url: 'test1.xml',
                reader: {
                    type  : 'xml',
                    record: 'INVOICE'
                }
            },
            autoLoad: true
        });
        var XMLTpl = new Ext.XTemplate(
            '<tpl for=".">',
                '<div class="id-class" id="{ID}">{ID}',
                '<div>{CUSTOMERID}',
                '<div>{TOTAL}',
            '</tpl>'
        );

        Ext.create("Ext.TabPanel", {
            fullscreen: true,
            tabBarPosition: 'bottom',
            items: [
                {
                    xtype: 'list',
                    title: 'Blog',
                    iconCls: 'home',
                    itemTpl: XMLTpl,
                    store: XMLStore,
                    singleSelect : true
                }
            ]
        }).setActiveItem(0);
    }
});

下面是xml-file的示例(您将通过地址:http://www.thomas-bayer.com/sqlrest/INVOICE/605获得它):

代码语言:javascript
复制
<?xml version="1.0"?><INVOICE xmlns:xlink="http://www.w3.org/1999/xlink">
    <ID>605</ID>
    <CUSTOMERID xlink:href="http://www.thomas-bayer.com/sqlrest/CUSTOMER/505/">505</CUSTOMERID>
    <TOTAL>209505</TOTAL>
</INVOICE>
EN

回答 1

Stack Overflow用户

发布于 2012-12-04 14:25:17

您必须设置一个php代理来进行交叉操作,这是我的代理调用的一个例子:

模型:

代码语言:javascript
复制
 Ext.regModel('ModelTrajectoire', {
     fields: [
              {
                name: 'lat',
              },
              {
                 name: 'lng'
              }
             ]
  });

商店:

代码语言:javascript
复制
     var StoreTrajectoire = new Ext.data.Store({
        model  : 'ModelTrajectoire',
        autoLoad: true,
        storeId: 'StoreTrajectoire',
        proxy: {
            type:'ajax',
            url: 'proxy.php',
            reader: {
                type: 'xml',
                record: 'step'
            }
        }
    });

proxy.php :

代码语言:javascript
复制
// type de retour
 header('Content-type: text/xml');
 // URL
 $requestURL = "http://maps.googleapis.com/maps/api/directions/xml?origin=Chicago,IL&destination=Los+Angeles,CA&sensor=false" ;
 //Getting data from URL requested
 $handle = fopen($requestURL, "r");
 if ($handle) {
while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo $buffer;
}
fclose($handle);
}

这对我来说很管用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8812034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档