Sencha Touch 2.3.1 + Phonegap 3.4 jsonp无法在Android上运行,但可以在浏览器上运行

时间:2014-06-13 17:54:50

标签: cordova sencha-touch

以下代码在浏览器中有效,我还根据本文设置了服务器以使用CORS:https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http%3A%2F%2Fwww.loiane.com%2F2014%2F01%2Frequests-ajax-com-cross-origin-resource-sharing-cors-entre-sencha-touch-e-extjs-e-backend%2F

这是我的模特:

Ext.define('App.model.Jobs', {
        extend: 'Ext.data.Model',

        config: {
            fields: ['category','type','contact','contactn','date', 'title', 'email', 'descr', 'link']
        }
    });

这是我商店的代码:

Ext.define('App.store.Jobs', {
    extend: 'Ext.data.Store',
    requires: ['App.model.Jobs','Ext.data.proxy.JsonP'],
    config: {
        model: 'App.model.Jobs',
        storeId:'jobs',
        proxy: {
            type: 'ajax',
            url: 'https://app.com/app/api/api.php',useDefaultXhrHeader: false
            extraParams: {get: 'records', records: 'class'},
            reader: {type: 'json', rootProperty:'data'}
        },
        grouper: {
            groupFn: function(rec) {
                return rec.get('category');
            }, sortProperty: 'category'
        },
        autoLoad: true
    }
});

这是我的清单代码:

Ext.define('App.view.Jobs', {
    extend: 'Ext.Container',
    xtype: 'jobs',
    requires: ['Ext.field.Search'],
    config: {
        top: 0, bottom: 0, left: 0, right: 0, layout: 'card', fullscreen: true,
        items: [
            {xtype: 'list', title: 'Jobs Listing', grouped: true, indexBar: true, itemTpl: '{title}',
                listeners: {initialize: function() {
                        var store = Ext.getStore('jobs');
                        store.load();
                        this.setStore(store);
                    }}},
            {xtype: 'panel', animate: true, scrollable: {direction: 'vertical'}, tpl: 'Job Title:<br/>{title}<br/>Job Type: <br/>{type}<br/>Position:<br/>{position}<br/>Description:<br/>{descr}<br/>Deadline:<br/>{date}<br/>Contact Person:<br/>{contactn}<br/>Contact Number:<br/>{contact}<br/>Email:<br/>{email}<br/>URL:<br/>{link}'

            }
        ]
    }
});

当我使用浏览器在浏览器中运行代码时,它运行正常。当我将其构建为本机应用程序时,它不会加载任何内容。 我列入白名单

<access origin="*"/>

我也尝试将代码转换为jsonP,但仍然没有在本机应用上加载任何内容但在浏览器中正常工作

这是我的服务器代码:

header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); 

1 个答案:

答案 0 :(得分:-1)

经过数小时的无果研究和重新设计应用程序后,我终于找到了解决方案。事实证明,每次我添加我的网址为thelink.com没有被退回,除非我不小心删除了s并将其设置为link.com。我想感谢大家上面提供的快速回复让我学习一两件事。感谢您的支持