在我的應用程序中,我們想要使用綁定到dojo.store.JsonRest
的dijit.form.FilteringSelect
,它會查詢一個非常大的名稱列表(大約100,000個名稱),因此我們需要商店的延遲加載功能的優勢。Dojo:在JSONP中使用RestStore
證明的概念代碼作品非常好:
var pmStore = new dojo.store.JsonRest({
target: "/pm/",
idProperty: "cn"
});
var pmFs = new dijit.form.FilteringSelect({
id: 'pmSelector',
name: 'pmNamePicker',
value: 'default here',
store: pmStore,
searchAttr: 'fullName',
displayAttr: 'fullName',
onChange: function (person) {
// Look up and display some more details
}
}, 'select');
的概念證明代碼位於同一個域中的RESTful服務,並且效果很好。但是,對於生產,查詢服務器將處於不同的域中,並且必須使用JSONP(由於絕對要求支持IE 7,CORS不是一種選擇)。
使用dojo.io.script
,使用JSONP進行簡單查詢很簡單。
我們如何連接dojo.store.JsonRest
以通過JSONP進行通信;還是有另一家商店這樣做?
我們仍在使用Dojo 1.6.1,但可以升級到任何不能替代構建工具的更高版本,因爲我們沒有用於新構建方法的自定義構建腳本,並且我們所有的遺留代碼使用dojo.require(...)
語法,而不是新的AMD語法。
你會認爲製作JsonRest的jsonp版本應該很容易......我們將會看到。 – SAJ14SAJ
不應該很難。只有'get','put'和'query'應該改變。 https://github.com/dojo/dojo/blob/master/store/JsonRest.js – g00glen00b
我有一個新的'JsonpReadRest'對象,但只需將調用替換爲xhrGet調用'dojo.io.script.get '留下錯誤,說'fetch'方法不被支持,我真的不知道應該在哪裏支持fetch方法。仍在挖掘。 – SAJ14SAJ