我正在使用Extjs4.1 MVC。我想做的是将一些数据保存到服务器,但是我不知道正确的格式或如何将数据提交到服务器。
这是我的想法,但我不认为Ajax调用应该在控制器中,应该在模型中还是在存储文件中?
我的控制器中的方法:
submit: function(value) {
data = {"id": 100, "tdt": "rTk", "val": "445"} // test data
Ext.Ajax.request({
url: 'http://test.myloc.com/providerSvc/dbproxy.php',
params: {
'do':'insert',
'object': 'stk',
'values': data
},
success: function(response){
alert('response.responseText);
}
})
}
我的商店:
Ext.define('STK.store.Stack', {
extend: 'Ext.data.Store',
model: 'STK.model.Stack',
autoLoad: true,
proxy: {
type: 'ajax',
api: {
read: 'http://test.myLoc.com/providerSvc/dbproxy.php?do=get&object=stack'
},
reader: {
type: 'json',
root: 'data',
successProperty: 'success'
},
writer: {
type: 'json'
}
}
});
我的模型:
Ext.define('STK.model.Stack', {
extend: 'Ext.data.Model',
fields: ['id', 'tdt', 'val']
});
最佳答案
store.sync()
仅在GET和POST的端点相同时起作用。
您可以做的是,对于GET
通过连接到URL或通过创建类似的对象来设置extraParams
extraParams[urlKeys] = paramObject[urlKeys];
store.getProxy().setExtraParams(extraParams);
然后,
Store.getProxy().setUrl(StoreUrlForGET);
Store.load({
callback : function(rec, operation, success) {
if (success) {}
else {}
});
对于POST,请编写一个AJAX请求,
Ext.Ajax.request({
url : StoreURLForPOST,
method : 'POST',
jsonData : Ext.JSON.encode(YourPostData),
success : function(response, request) {},
failure : function(response, request) {}
});
对于此AJAX请求,您可以
Ext.Ajax.setDefaultHeaders({
"TokenId" : TokenValue
});
所有这些代码都进入您的控制器。