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-Origin、応答に HTML ヘッダーを追加する必要があります。

すべてのドメインを有効にします。

Access-Control-Allow-Origin: *  

ドメインのリストを有効にします。

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

ここで、さまざまな Web サーバーを構成する方法の例を見つけることができます。

于 2012-09-17T02:00:52.680 に答える