我正在使用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
});


所有这些代码都进入您的控制器。

10-08 01:27