我的Json数组仅返回最后一个数组。如何解决?

时间:2019-08-23 15:18:20

标签: javascript jquery arrays json

我的JSON数组有问题。这是我的Ajax代码(我将文件excel上传并返回JSON。然后将Json转换为字符串并保存到myDb):

function exportExcelToTable() {
    $('#upload-excel-convert').change(function (e) {
        let file = $(this).prop('files')[0];
        let formData = new FormData();
        formData.append("file",file);
        $("#js-render-btn-see-excel").html('');
        $('#js-table-excel tbody').html('');
        $.ajax({
            method:'POST',
            url: '/order/excel/read-file',
            data: formData,
            contentType: false,
            processData: false,
            dataType:'json',
            success(data) {
                let $data = $('input[name="order[sizeFile]"]');

                for (let i = 1; i < data.length; i++) {
                    $data.val(JSON.stringify(data[i]));
                    console.log(data[i]);
                }
            }
        });
    })
}

这是要返回的杰森console.log(data[i])

[["XS ", "Nam", null, null, null, 20],
 ["S", null, 13, null, null, 35],
 ["M", null, 12, null, null, 12]
]

我的输入值只返回最后一个数组

<input type="hidden" name="order[sizeFile]" value="["M";,null,12,null,null,12]">

我想要输入值,例如:

<input type="hidden" name="order[sizeFile]" value="[["XS ", "Nam", null, null, null, 20],["S", null, 13, null, null, 35],["M", null, 12, null, null, 12]]">

该如何解决?谢谢。

P/s对不起,我的英语。

UPDATE 我正在更新代码。

function exportExcelToTable() {
    $('#upload-excel-convert').change(function (e) {
        let file = $(this).prop('files')[0];
        let formData = new FormData();
        formData.append("file",file);
        $("#js-render-btn-see-excel").html('');
        $('#js-table-excel tbody').html('');
        $.ajax({
            method:'POST',
            url: '/order/excel/read-file',
            data: formData,
            contentType: false,
            processData: false,
            dataType:'json',
            success(data) {
                let $data = $('input[name="order[sizeFile]"]');
                let list;

                for (let i = 1; i < data.length; i++) {
                    list += JSON.stringify(data[i]);
                    $data.val(list);
                    console.log(data[i]);
                }
            }
        });
    })
}

是的,但是我的输入显示undefined的值。

<input type="hidden" name="order[sizeFile]" value="undefined[["XS ", "Nam", null, null, null, 20],["S", null, 13, null, null, 35],["M", null, 12, null, null, 12]]">

1 个答案:

答案 0 :(得分:0)

将控制台的输出存储在var中,然后在成功回调中,您可以使用该数组并替换输入中的值

您的JS应该是

success(data) {
    let $data = $('input[name="order[sizeFile]"]');


    var excelData = [];
    for (let i = 1; i < data.length; i++) {
        $data.val(JSON.stringify(data[i]));
        console.log(data[i]);
        excelData.push(data[i])
    }

    $("#showValues").val(excelData);

}

并在输入字段中输入一个ID,以便以后可以替换该值

<input type="hidden" id="showValues" name="order[sizeFile]" value="">