Извлечение данных из JSON и отображение в предупреждении SWAL - PullRequest
0 голосов
/ 26 апреля 2018

У меня проблемы при попытке показать информацию из Json в предупреждение, это мой код.

 function check_values_chbx(){

        var pre_insc = [];
        }).done(function(response){   

            for(i=0; i<response.length; i++){
                           pre_insc[i] = response[0]['personas'][i]['name']+" "+response[0]['personas'][i]['ap_pat']+" "+response[0]['personas'][i]['ap_mat'];                            
                        }
                        alert(pre_insc[1]);
            swal({
              title: "Detalles de inscripcion",
              text: "Participantes que quedaran inscritos: \n\n"+pre_insc.join('\n')+"\n\nCategoria:",    
              buttons: true,
              dangerMode: false,
            }).then((willDelete) => {
              if (willDelete) {
                swal("Participantes registrados con exito, mucha suerte!", {
                  icon: "success",
                });
              }else {
                location.reload();
              }
            });


        });    
        }

А это мой JSON

[
{
    "personas": [
        {
            "name": "Jessica",
            "ap_pat": "BocaNegra",
            "ap_mat": "Garcia"
        },
        {
            "name": "Fernando",
            "ap_pat": "Soto",
            "ap_mat": "Olivas"
        }
    ],
    "evento": [
        {
            "name": "Carrera larga"
        }
    ],
    "categoria": [
        {
            "name": "Juvenil"
        }
    ]
}
]

Мне нужно напечатать каждое имя как:

swal("name1\n"+name2\n"+etc").

Пожалуйста, если кто-то может мне помочь, это будет оченьполезно, хорошего дня.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать приведенный ниже скрипт, который рекурсивно повторяет объект json, если находит array или Object, пока не найдет text для данного свойства, а затем напечатает их все, если имя свойства name с \n разделителем, вы можете добавить следующее в ваш файл скрипта и передать ему полученный ответ и использовать возвращенные имена с вашим sweetAlert, просто убедитесь, что вы передаете ответ функции, как показано ниже

names = jsonParser.getNames(response[0]);

Добавьте приведенный ниже сценарий

var jsonParser = {
    isObject: function (property) {
        return property && {}.toString.call(property) === '[object Object]';
    },
    isArray: function (property) {
        return property && {}.toString.call(property) === '[object Array]';
    },
    getNames: function (errors) {
        var data = "";

        for (let message in errors) {
            var errorSet = errors;
            if (errorSet.hasOwnProperty(message)) {

                if (jsonParser.isArray(errorSet[message]) || jsonParser.isObject(
                        errorSet[message])) {
                    data += jsonParser.getNames(errors[message]);
                } else if (message == 'name') {
                    data += errorSet[message] + "\n";
                }

            }
        }
        return data;
    }
};

Ниже приведен пример чтения имен из вашего ответа.

var jsonParser = {
  isObject: function(property) {
    return property && {}.toString.call(property) === '[object Object]';
  },
  isArray: function(property) {
    return property && {}.toString.call(property) === '[object Array]';
  },
  convertToString: function(errors) {
    var data = "";

    for (let message in errors) {
      var errorSet = errors;
      if (errorSet.hasOwnProperty(message)) {

        if (jsonParser.isArray(errorSet[message]) || jsonParser.isObject(
            errorSet[message])) {
          data += jsonParser.convertToString(errors[message]);
        } else if (message == 'name') {
          data += errorSet[message] + "\n";
        }

      }
    }
    return data;
  }
};

var response = [{
  "personas": [{
      "name": "Jessica",
      "ap_pat": "BocaNegra",
      "ap_mat": "Garcia"
    },
    {
      "name": "Fernando",
      "ap_pat": "Soto",
      "ap_mat": "Olivas"
    }
  ],
  "evento": [{
    "name": "Carrera larga"
  }],
  "categoria": [{
    "name": "Juvenil"
  }]
}];

var names = '';

names = jsonParser.convertToString(response[0]);

console.log(names);

Ваш окончательный сценарий должен выглядеть так:

function check_values_chbx(){

        var pre_insc = [];
        }).done(function (response) {

    var names = jsonParser.getNames(response[0]);
    swal({
        title: "Detalles de inscripcion",
        text: "Participantes que quedaran inscritos: \n\n" + names +
            "\n\nCategoria:",
        buttons: true,
        dangerMode: false,
    }).then((willDelete) => {
        if (willDelete) {
            swal("Participantes registrados con exito, mucha suerte!", {
                icon: "success",
            });
        } else {
            location.reload();
        }
    });
});

Надеюсь, это поможет вам

...