2012-03-03 24 views
1

JSONを使用してデータを送信するためにEXT JSONストアを作成しようとしていますが、動作していないようです。私はJSON「作家」、JSONを使用してサーバに送信することparameterswould私の期待を定義しているのでExt.data.store JSON形式のPOSTデータの問題

 var myStore = new Ext.data.Store({ 
    //model: 'User', 
    proxy: { 
     type: 'ajax', 
     url: '/users.svc', 
     reader: { 
      type: 'json', 
      root: 'users' 
     }, 
     writer: { 
      type: 'json', 
      root: 'data' 
     }, 
     actionMethods: { 
      create: 'POST', read: 'POST', update: 'POST', destroy: 'POST' 
     }, 
     extraParams: { test: 'test' } 
    }, 
     listeners: { 
      beforeload: function (store, operation, options) { 
       //alert(operation.params); 
      } 
     }, 
    autoLoad: true 
}); 

: は簡単なコードです。私は任意のヘルプ

P.S.をいただければ幸いです{test:'test',page:1,start:0}

:私の期待はPOSTには、次のボディを持つべきであるということですが test=test&page=1&start=0&limit=25

:それはまだ、次のボディと、通常のPOSTをやっているが EXTJS 4.0.7を使用しています

答えて

0

の定義をmodelにシフトします。

など。

Ext.define('User', { 
extend: 'Ext.data.Model', 
fields: ['id', 'name', 'email'], 
proxy: { 
    type: 'ajax', 
    url: '/users.svc', 
    reader: { 
     type: 'json', 
     root: 'users' 
    }, 
    writer: { 
     type: 'json', 
     root: 'data' 
    }, 
    actionMethods: { 
     create: 'POST', read: 'POST', update: 'POST', destroy: 'POST' 
    }, 
    extraParams: { test: 'test' } 
} 
}); 

はその後、そうのような店舗を設定します。

var myStore = new Ext.data.Store({ 
    model: 'User' 
    }); 

ストアがモデルに指定されたプロキシを使用します。 これが役立つことを願っています!

2

proxy.readはいつものparams、NOT jsonDataを使用するので、store.loadは、JSON

http://ahlearns.wordpress.com/2012/08/16/ext-js-4-load-a-data-store-using-json-params/

Ext.define('Ext.ux.data.proxy.JsonAjaxProxy', { 
extend:'Ext.data.proxy.Ajax', 
alias:'proxy.jsonajax', 

actionMethods : { 
    create: "POST", 
    read: "POST", 
    update: "POST", 
    destroy: "POST" 
}, 

buildRequest:function (operation) { 
    var request = this.callParent(arguments); 

     // For documentation on jsonData see Ext.Ajax.request 
     request.jsonData = request.params; 
     request.params = {}; 

     return request; 
}, 

/* 
* @override 
* Inherit docs. We don't apply any encoding here because 
* all of the direct requests go out as jsonData 
*/ 
applyEncoding: function(value){ 
    return value; 
} 

}); 

これが役に立てば幸い投稿することはできません!

+0

リクエスト本体での送信方法は?私はリンクを見ましたが、これを理解することはできませんでしたか? – Isaac

+0

この質問は、 "JSON形式のExt.data.store POSTデータ"、 ですので、 store.load({params:{a:1、b:2}}) をjsonとして投稿するには – Song

+0

このようになります、それではないでしょうか?しかし、 'api:{create: 'server/jsonProxy.php?action = create'、read:undefined、update: 'server/jsonProxy.php?action ='のような' api'configを定義することなく、 update '、destroy:' server/jsonProxy.php?action = destroy '}}、 ' –