2012-03-03 65 views
1

我試圖讓EXT JSON存儲使用JSON發送數據,但它似乎沒有工作。 下面是簡單的代碼: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 
}); 

既然我定義JSON「作家」,我期望parameterswould使用JSON被髮送到服務器。 但是它仍然定期做POST具有以下機身: test=test&page=1&start=0&limit=25

雖然我的期望是,POST應具備以下機構:{test:'test',page:1,start:0}

我希望得到任何幫助

附:我正在使用EXTJS 4.0.7

回答

0

proxy的定義更改爲model

E.g.

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總是使用參數,可以不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 2013-05-15 05:58:45

+0

這個問題是關於「JSON格式的Ext.data.store POST數據」, 所以使用 store.load({params:{a:1,b:2}}) 將參數傳遞爲json – Song 2013-06-05 14:40:53

+0

看起來像這樣應該工作,不是嗎?但是,如何區分這些操作,而不需要像' 'api:{create:'server/jsonProxy.php?action = create',讀取:undefined,update:'server/jsonProxy.php?action =更新',銷燬:'server/jsonProxy.php?action = destroy'},' – 2013-11-17 15:03:01