2011-11-15 61 views
3

我不知道如何檢測AJAX代理生成的HTTP請求是插入/更新還是刪除操作。在Sencha Touch 1.1中使用AJAX代理從商店中刪除記錄

這些是我的數據(simpsons.json):

[ 
    { 
     "id": 1, 
     "firstName": "Homer" 
    }, 
    { 
     "id": 2, 
     "firstName": "Marge" 
    }, 
    { 
     "id": 3, 
     "firstName": "Bart" 
    }, 
    { 
     "id": 4, 
     "firstName": "Lisa" 
    } 
] 

這是我的煎茶觸摸1.1代碼:

Character = Ext.regModel('Character', { 
    fields: [ 
     {name: 'id', type: 'int'}, 
     {name: 'firstName', type: 'string'} 
    ] 
}); 

SimpsonsStore = new Ext.data.Store({ 
    model: 'Character', 
    proxy: { 
     type: 'rest', 
     url: 'simpsons.json' 
    }, 
    autoLoad: true 
}); 

SimpsonsStore.on('load', function(store, records, success) { 

    // add record 
    store.add({id: 5, firstName: 'Maggie'}); 

    // update record 
    var margeRecord = store.findRecord('firstName', 'Marge'); 
    margeRecord.set('firstName', 'Marjorie'); 

    // delete record 
    var homerRecord = store.findRecord('firstName', 'Homer'); 
    store.remove(homerRecord); 

    // sync store 
    store.sync(); 
}); 

運行該代碼生成這些HTTP請求:

POST /simpsons.json/5?_dc=1321377134028 HTTP/1.1 

{"records":[{"id":5,"firstName":"Maggie"}]} 

PUT /simpsons.json/2?_dc=1321377142625 HTTP/1.1 

{"records":[{"id":2,"firstName":"Marjorie"}]} 

DELETE /simpsons.json/1?_dc=1321377148457 HTTP/1.1 

{"records":[{"id":1,"firstName":"Homer"}]} 

像這樣,每個操作都有自己的HTTP請求方法(動詞)。

當我從「休息」更改代理服務器類型爲「AJAX」生成的HTTP請求看起來像這些:

POST /simpsons.json?_dc=1321376787918 HTTP/1.1 

{"records":[{"id":5,"firstName":"Maggie"}]} 

POST /simpsons.json?_dc=1321376792207 HTTP/1.1 

{"records":[{"id":2,"firstName":"Marjorie"}]} 

POST /simpsons.json?_dc=1321376798158 HTTP/1.1 

{"records":[{"id":1,"firstName":"Homer"}]} 

正如你可以看到這些看起來非常相似。這對插入或更新操作不是問題。但是後臺如何檢測到最後一個HTTP請求是既不是插入也不是更新但是刪除操作

我在Sencha Touch 2.0中發現了一個「api」配置選項,因爲它存在於Ext JS 4中,但我沒有找到一種方法來爲Sencha Touch 1.1中的AJAX代理的特定操作定義不同的URL或參數。

任何幫助表示讚賞。

感謝,

烏韋

回答

2

轉到這裏http://docs.sencha.com/touch/1-1/#!/api/Ext.data.AjaxProxy向下滾動到URL生成,並閱讀有關Ext.data.Operation對象以及如何使用它們。

+0

感謝。我已經讀過這個。所有這些示例都顯示瞭如何將這種自定義操作作爲參數傳遞給代理的讀取方法。但我正在與一家商店合作,調用其同步方法。我看不出這些示例如何幫助我根據自己的操作將生成的HTTP請求區分開來。請指教。 – urk

2

的actionMethods的AjaxProxy的屬性默認設置爲

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

你可以簡單地將其覆蓋:

store.getProxy().actionMethods = { 
    create: "POST", 
    read: "GET", 
    update: "PUT", 
    destroy: "DELETE" 
}; 
相關問題