2011-04-11 9 views
1

私はScriptTagProxyを取得しましたが、データを受け取ることができましたが、今はレコードを更新したいと考えました。私はURLを指定しましたが、URLは1つだけです。私はこのURLですべてのアクション(読み取り、更新、作成、削除)を処理する必要がありますか? はいの場合:アクションはどのようにURLに適用されますか? そうでない場合:どのようにURLを指定できますか?Sencha Touch:作成/更新機能のScriptTagProxy URL

app.stores.entries = new Ext.data.Store({ 
    model: "app.models.Entry", 
    storeId: 'app.stores.entries', 
    proxy: { 
     type: 'scripttag', 
     url: 'http://myurl.de/getEntries.php', 
     extraParams: { 
      username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username, 
      password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password 
     }, 
     reader: { 
      type: 'json' 
     }, 
     writer: { 
      type: 'json' 
     } 
    } 
}); 

私はドキュメントで読んだあなたは、プロキシを形作るためのモデルの保存機能にconfigオブジェクトを渡すことができます:ここで

は、私がこれまで持っているコードです。

だから私は、次のことを試してみました:

entry.save({ 
      url: 'http://mysite.com/updateEntry.php', 
      extraParams: { 
       username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username, 
       password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password, 
       entry: entry 
      },} 

あなたは指定されたURLがあると見ての通り。 しかし、私はまだエラーが発生します: Uncaught Error:ServerProxyを使用していますが、URLを提供していません。 );

例えばAjaxProxyまたはRestProxyを使用して、同じ動作が:(

答えて

0

ヘリング、

コードのあなたの最初のブロックでは、あなたは尋ねる:

質問1)「私はすべてのアクションを処理するために持っていますが(読んだ、更新する、作成する、削除する)このURLで?

答えははいです。

質問2)「はいの場合:どのようにアクションがURLに適用されますか?」あなたはそのようactionMethodsを定義する必要が煎茶のソースコードによると

myApp.stores.Things = new Ext.data.Store({ 
model: "Things", proxy: { 
    type: 'ajax', 
    actionMethods: { 
     create: 'POST', 
     read: 'GET', 
     update: 'PUT', 
     destroy: 'DELETE' 
    }, 
    url: 'jsontest.json', 
    reader: { 
     type: 'json', 
     root: 'things' 
    } 
}, 
autoLoad: true 

});

あなたが呼び出す必要がありますレコードを、削除作成または編集する場合:

store.sync();

あり、「自動保存」の特性もあるが、それは唯一の編集、削除しないで同期します。

これは、リクエストペイロードの一部として変更または削除されたものを送信します.Jsonを解析して処理するのは、あなたの責任です。しかし、あなたはapp.models.Entryのためのあなたのモデルを示していない上に、持っている

Ext.regModel('User', { 
    fields: ['id', 'name', 'email'], 

    proxy: { 
     type: 'rest', 
     url : '/users' 
    } 
}); 

+0

定義したactionMethodがデフォルト値なので、これは何も変更されません。私はちょうど.save()モデル "インスタンス"をしたかった。これがエラーの発生場所です。私はsync()を行うことができますが、これは私がバックエンドでデータを更新できるURLを呼び出さないでしょう。 あなたの答えに感謝しますが、それは問題を解決しません:( – hering

+0

私はそれらが明示的に設定するまで、彼らがデフォルトであるように見えますが、それは実際にはその方法ではありませんでした。私はそれらを設定した後、私はDELとPUTリクエストを取得し始めました。 – ballmw

0

ヘリングは、

私はドキュメントhereを読んでいた、私はモデルクラスで、この例を見つけましたあなたはそれを試みた?

関連する問題