Событие reader.onload не запускается, и результаты FileReader () возвращаются как нулевые - PullRequest
0 голосов
/ 04 марта 2020

Не уверен, что происходит с этим, если мой синтаксис неверен и / или если я что-то упустил в своем коде.

Предполагается, что мой проект анализирует файл Excel и отображает его данные в консоли, но у меня проблемы с reader.onload ... отладчик проходит через него и его значения возвращаются как ноль.

HTML:

<input class="getFile" id="getFile" type="file" name="files[]" multiple="multiple"/><br />

JS:

<script>
    const ExcelToJSON = function(files) {

        this.parseExcel = function(files) {
            debugger;

            let reader = new FileReader();

                reader.onload = function(e) { // this isn't hit at all
                    console.log("load evt has been fired");
                    try {
                        let data = e.target.result; // FileReader.result
                            console.log("data: ", data)
                        let workbook = XLSX.read(data, { type: 'binary' });

                        workbook.SheetNames.forEach((sheetName) => {
                            let XL_row_object = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]);
                            let json_object = JSON.stringify(XL_row_object);

                            console.log(JSON.parse(json_object))

                            $('#jsonData').val(XL_row_object);
                            })
                    } catch(err) {
                        console.log(err)
                    }
                }
                 // reader.onload

            reader.onerror = function(err) {
                console.log(err);
            }

            // reader.readAsBinaryString(files); // tells JS to start reading the file
        } // this.parseExcel

    } // ExcelToJSON

    function handleFileSelect(evt) {
        let files = evt.target.files; // FileList object

            let xl2json = new ExcelToJSON(files);
                    xl2json.parseExcel(files[0]);
                    let xl2String = JSON.stringify(xl2json);


            let addlistItem = new AddItemToSPList();

                AddItemToSPList(xl2String[0].Title, xl2String[0].Office);
                console.log(xl2String) // empty obj...

    }

    const AddItemToSPList = function(title, office) {
        // working as intended
    }

</script>


<script>
    document.getElementById('getFile').addEventListener('change', handleFileSelect, false);
</script>
...