Sencha - 使用JSONP将商店同步到MySQL数据库?

时间:2012-09-17 01:40:40

标签: extjs jsonp sencha-touch-2

我正在尝试从外部MySQL数据库中的数据显示列表,并从Sencha Touch App将记录插入到同一数据库中。经过多次混淆,我能够使用以下方式阅读和显示记录:

Ext.define("App.store.Share", {
extend: "Ext.data.Store",
required: "App.model.Share",
config: {
    model: "App.model.Share",
    proxy: {
        type: 'jsonp',
        api: {
            create: "http://127.0.0.1/submit.php?action=create",
            read: "http://127.0.0.1/submit.php?action=read",
            update: "http://127.0.0.1/submit.php?action=update",
            destroy: "http://127.0.0.1/submit.php?action=delete",
        },
        reader: {
            type: 'json',
            root: "ideas",
            totalProperty: "total"
        },
        writer: {
            type: 'json',
            writeAllFields: true
        }
    },
    pageSize: 3,
    autoLoad: true,
    autoSync: true
}
});

但是,当我尝试将记录添加到数据库时,我收到错误:

Uncaught Error: [ERROR][Ext.data.proxy.Server#create] JsonP proxies can only be used to read data. 

我最初使用的是ajax代理,但我不能使用它,因为整个跨域的恶作剧。所以,如果我不能使用JsonP编写,而且我不能使用ajax,我该怎么办?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用AJAX,但必须在服务器上启用跨域调用。要实现此目的,您必须在响应中添加Access-Control-Allow-Origin HTML标头,例如:

启用所有域:

Access-Control-Allow-Origin: *  

启用域列表:

Access-Control-Allow-Origin: http://mydomain.com:8080 http://foo.otherdomain.com

您可以找到如何配置不同网络服务器here的示例。