使用json和jsonP之间的差异

时间:2013-07-01 16:03:36

标签: ajax extjs jsonp store

我有一个简单的控制器来更新我的数据库中的卡车列表。最初它一直在使用jsonP(因为我的服务器在另一个域中),并且它工作正常,但后来我加入了php脚本(在db中管理crud)并且我已经更改为ajax代理。问题是我注意到虽然ajax代理发送POST请求...我从来没有得到任何东西......(这些从未发生过jsonp,因为它发送了GET请求我认为)。那么,有什么我忘记了或者我必须做的事情吗?

让我在升级前后展示我的商店:

在:

Ext.define('myapp.store.ListaCamiones', {
extend: 'Ext.data.Store',

requires: [
    'myapp.model.Camion'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        autoSync: true,
        model: 'myapp.model.Camion',
        storeId: 'ListaCamiones',
        proxy: {
            type: 'jsonp',
            api: {
                read: 'http://myapp.localhost/camion/listar',
                write: 'http://myapp.localhostt/camion/guardar/',
                update: 'http://myapp.localhost/camion/guardar/',
                destroy: 'http://myapp.localhost/camion/eliminar/'
            },
            url: 'http://myapp.localhost/camion/listar',
            reader: {
                type: 'json',
                root: 'listacamion'
            },
            writer: {
                type: 'json',
                root: 'listacamion'
            }
        }
    }, cfg)]);
}
});

在:

Ext.define('myapp.store.ListaCamiones', {
extend: 'Ext.data.Store',

requires: [
    'myapp.model.Camion'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        autoSync: true,
        model: 'myapp.model.Camion',
        storeId: 'ListaCamiones',
        proxy: {
            type: 'ajax',
            url: '/camion/listar',
            api: {
                read: '/camion/listar',
                write: '/camion/guardar/',
                update: '/camion/guardar/',
                destroy: '/camion/eliminar/'
            },
            reader: {
                type: 'json',
                root: 'listacamion'
            },
            writer: {
                type: 'json',
                root: 'listacamion'
            }
        }
    }, cfg)]);
}
});

这是我从chrome debug获得的:

Connection:Keep-Alive
Content-Length:0
Content-Type:application/x-json
Date:Mon, 01 Jul 2013 15:40:38 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.22 (Ubuntu)
X-Powered-By:PHP/5.4.9-4ubuntu2

我希望你能帮我理解发生的事情。提前谢谢

1 个答案:

答案 0 :(得分:0)

尝试将代理类型更改为“休息”