SAPUI5 JSONModel и JSONP
У меня есть служба REST на основе JSONP, которую мне нужно загрузить в JSONModel.
URL: http://pipes.yahoo.com/pipes/pipe.run?_id=eb8dcd1d84e4aa323378ce219683878a&_render=json&_callback=bbcModelLoaded
(Параметр _callback - это вызываемая функция JSONP)
Каков предпочтительный способ создания JSONModel из этого?
Я бы предпочел не обрабатывать вызов AJAX самостоятельно.
Ошибка при создании JSONModel с url-адресом JSONP:
Возникла следующая проблема: parsererror-bbcModelLoaded ({"count": 52,...
3 ответов:
Нет необходимости в $.getJSON, модель JSONP или любое другое принятие кода.
Это действительно работает из коробки:
new sap.ui.model.json.JSONModel("http://pipes.yahoo.com/pipes/pipe.run?_id=eb8dcd1d84e4aa323378ce219683878a&_render=json&_callback=?");Живой пример здесь: http://jsbin.com/babiqoze/1/edit?html, вывод
Важно то, что вы устанавливаете значение параметра обратного вызова в "?- так что jQuery обнаружит его и обработает как запрос JSONP. http://api.jquery.com/jquery.getjson/#jsonp
Самым простым решением, найденным до сих пор, является использование getJSON JQuery
$.getJSON("http://pipes.yahoo.com/pipes/pipe.run?_id=eb8dcd1d84e4aa323378ce219683878a&_render=json&_callback=?", function(results) { oModel= new sap.ui.model.json.JSONModel(results); }Может быть, нам следует добавить JSONPModel, который просто делает это в #sapui5/openui5 ?
Было бы неплохо иметь модель JSONP в sapui5. Я также не уверен, как обрабатывать тайм-ауты, обратные вызовы и ошибки? Также генерация параметров могла бы быть более динамичной.
Что-то вроде:
var mParameters = { "Key1" : "Value1", "Key2" : "Value2", ... } var oModel = new JsonpModel(sURL, mParameters, fCallback, fTimeout);
Comments