Возможно ли генерация полей при получении n-массива из веб сервера

Доброго времени суток коллеги. У меня возникли две проблемы. Имею вызов метода 


      SetUrlAnswer: function() {
 
        var xhr = new XMLHttpRequest();
 
        var url = "http://localhost/0/rest/Service1/Testing";
 
        xhr.open("GET", url);
 
        xhr.responseType = "json";
 
        xhr.setRequestHeader("Content-type", "application/json");
 
        var self = this;
 
        xhr.onreadystatechange = function() {
 
            if (xhr.readyState === 4 && xhr.status === 200) {
 
                // for (var i = 0; i < xhr.length; i++ ) {
 
                  self.set("UsrCharCode",
 
                   JSON.stringify(xhr.response[0].CharCode));
 
                  self.set("UsrID", 
 
                   JSON.stringify(xhr.response[0].ID));
 
                  self.set("UsrNameV", 
 
                   JSON.stringify(xhr.response[0].Name));
 
                  self.set("UsrNominal", 
 
                   JSON.stringify(xhr.response[0].Nominal));
 
                  self.set("UsrNumCode",
 
                   JSON.stringify(xhr.response[0].NumCode));
 
                  self.set("UsrPrevious", 
 
                  JSON.stringify(xhr.response[0].Previous));
 
                  self.set("UsrValues", 
 
                   JSON.stringify(xhr.response[0].Value));
 
                // }
 
 
 
            } else {
 
               // Пока не реализовано
 
                self.set("UsrCharCode", "Не правильное получение данных!");
 
            }
 
        };xhr.send();
 
 

Как мне сделать правильную итерацию? Чтобы вот такого говно-кода избежать?

Вопрос второй(очень важный): Этот метод возвращает каждый раз разный массив данных. Вопрос в  том  Creatio предусмотрено генерация полей исходя из ответа сервера? Например мне в ответ приходит 4 видов валют USD, RUB, EUR, UZS и исходя из ответа сгенерировать таких групп полей:Надеюсь смог объяснить свою боль. Спасибо

Нравится

7 комментариев
Лучший ответ

Ислам Ибрагимжанов,

Я описал общую идею как работает DataService, можете поискать реализацию и попробовать понять, но это про сложные вещи.

Вам пока нужно начать использовать ServiceHelper и его функцию callService.

И читайте документацию, там такие кейсы описаны.

Зачем вы используете чистый XMLHttpRequest, уже есть классы для работы с сервисами.

https://academy.terrasoft.ru/docs/7-16/developer/back-end_development/c…

Итерацию можно сделать циклом по массиву с наименованиями полей. Можно сделать по переменным объекта. Список полей для итерации можно возвращать со стороны сервера. Тут у вас полная свобода действий.

Полозюков Евгений Петрович,

Я не понял один момент

Список полей для итерации можно возвращать со стороны сервера. Тут у вас полная свобода действий. 

Вы это про мой второй вопрос? Я что то не до  конца понял. 

Ислам Ибрагимжанов,

Да, это про второй вопрос. Если у вас в ответе возвращается каждый раз разный набор полей и их значений, можно описать это в виде массива или объекта и его итерировать.

Полозюков Евгений Петрович,

Мне нужно сгенерировать поля для этих данных. Через выше указанный способ релаьно реализовать такое?

Ислам Ибрагимжанов,

Я описал общую идею как работает DataService, можете поискать реализацию и попробовать понять, но это про сложные вещи.

Вам пока нужно начать использовать ServiceHelper и его функцию callService.

И читайте документацию, там такие кейсы описаны.

Полозюков Евгений Петрович, Спасибо за помощь. Я понял идеюyes

Показать все комментарии