2017-11-22 18 views
1

私は困惑しています。 私はOnDemandGridを編集可能にしており、その下に私のバックエンド(PHPで)を指すdstore/Restコレクションがあります。POSTでdstore/Restの結果に基づいてOnDemandGridを更新します。PUTではなく

OnDemandGridはエディタと混在しています...データを編集できますが、保存できません。サーバー側で受け取るのは、コレクションに完全な行を挿入する "POST"要求です...そして、私は更新プログラムを受け取ることはありません。

代わりにPUTリクエストを受け取ってもいいですか?私は、これは、クライアント側の一部である...データに

をIDを使用しています:

function (...) 
{ 
     var EditGrid = declare([ OnDemandGrid, Keyboard, Editor ]); 
     var coll = new Rest({ 
             target: 'my.php/x/', 
             idProperty: 'id', 
             rangeStartParam: 'range', 
             rangeCountParam: 'limit', 
             sortParam: 'sort' 
           });  
     var grid = new EditGrid({ columns: { 
            user_name:{ 
             label: 'User name', 
             editor: 'text', 
             editOn: 'click, dbclick', 
            autoSave: true, 
           }}, 
           collection: coll }, 'grid'); 
     grid.startup(); 
} 

は私が正しく行を編集し、打った後、次に...テーブルを移入するためにGETクエリを受け取ります"戻る"、私はPOSTを取得!

http_response_code(201); 
header("location: ".$_SERVER['PATH_INFO'].$id); 

どこ:

サーバ側はPOSTに私はちょうどこれを返しながら、私は、SQLクエリと結果をJSONが-IZE行うGETで、基本的には...ここに表示するには、もう少し複雑です$ idはリクエストから受け取ったIDと同じです...

POSTの後、私は何も受け取りません。そして、POSTデータでは、私は以前の、変更されていない行のコピーを受け取るだけです...私は "新しい"編集されたデータを受け取ることはありません。

私はある時点でPUT要求を受け取るはずです...私はブラウザデバッガ、サーバログ、何もどこでも試してみました。

誰でも私をここで助けることができますか?

答えて

0

私は最終的にそれを修正しました。

これは非常に畳み込まれており、この混乱がすべてほとんど文書化されていません。私はブラウザのデバッガとdgrid/Restソースコードを掘り下げなければならなかった。

問題はすべて私のRESTバックエンドにあった。それは、変更されるアイテムを要求するPUT/POSTの前にdgridがGETを実行し、特定の "id"を要求することによって1つのレコードのみでGETします。それは意味をなさない。

私のバックエンドは、JSON形式の要素を1つ持つARRAYを返します。これはエラーでした!これはdgridによって正しく解析されず、PUTの代わりにPOSTに導かれます。

1つのJSON項目を内部に持つ配列ではなく、1つのJSON項目を返すようにGETバックエンドを修正すると、dgridは正しいPUTを送信し始めました。

関連する問題