1

我正在尝试从外部 MySQL 数据库中的数据显示列表,并从 Sencha Touch 应用程序将记录插入同一数据库。经过一番困惑后,我能够使用以下方法阅读和显示记录:

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,那怎么办呢?

谢谢你的帮助!

4

1 回答 1

1

您可以使用 AJAX,但您必须在服务器上启用跨域调用。为此,您必须将Access-Control-Allow-OriginHTML 标头添加到您的响应中,例如:

启用所有域:

Access-Control-Allow-Origin: *  

启用域列表:

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

您可以在此处找到如何配置不同 Web 服务器的示例。

于 2012-09-17T02:00:52.680 回答