从JSON中提取数据并在SWAL警报中显示

时间:2018-04-25 23:16:53

标签: php jquery json sweetalert

我在尝试从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 :(得分:0)

如果找到jsonarray,直到找到给定属性的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;
    }
};

下面给出了从给定响应中读取名称的示例。

&#13;
&#13;
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);
&#13;
&#13;
&#13;

您的最终脚本应该是

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();
        }
    });
});

希望这可以帮助你