ORIGINALE

Je charge Papaparse à la volée dans mon application Javascript comme ceci:

$.getScript('path/to/papaparse.js',function() {
    //below script
});

Ensuite, j'obtiens le fichier pour une analyse comme celle-ci.

$('#csv_file').parse({
    delimiter: ",",
    worker: true,
    skipEmptyLines: true,
    before: function(file,inputElement) {
        console.log(file);
        console.log(inputElement);
    },
    error: function(err, file, inputElement, reason) {
        console.log('error');
        console.log(err);
        console.log(file);
        console.log(inputElement);
        console.log(reason);
    },
    step: function(results,parser) {
        console.log(results);
        console.log(parser);
    },
    complete: function(results,file) {
        console.log(results);
        console.log(file);
    }
});

Aucun de mes console.log dans le rappel step ne se déclenche, mais ils impriment à partir des rappels before - et complete -.

before:
    file:
        File {}
        lastModified: 1437396586321
        lastModifiedDate: Mon Jul 20 2015 14:49:46 GMT+0200 (South Africa Standard Time)
        name: "normal.csv"
        size: 254743
        type: "application/vnd.ms-excel"
        webkitRelativePath: ""
    inputElement:
        <input type="file" name="csv_file" id="csv_file" class="form-control half">
complete:
    results: undefined
    file: undefined

Quelqu'un peut-il me dire pourquoi a) il ne renvoie rien dans mon step - rappel et b) pourquoi il revient undefined dans mon {{X2 }}-rappeler?

MISE À JOUR

J'ai ajouté le SCRIPT_PATH comme suggéré dans les commentaires comme ceci:

$.getScript('path/to/papaparse.js',function() {
    Papa.SCRIPT_PATH = config.basedir + '/app/lib/papaparse/papaparse.min.js';
    // Papa script
});

Et changé mon avant en ceci:

before: function(file,inputElement) {
    console.log(file);
    console.log(inputElement);
    return { action : 'continue' }
},

Cependant, toujours indéfini.

0
Albert 20 juil. 2015 à 16:14

2 réponses

Meilleure réponse

La solution était donc assez simple. complete: function(results,file) et step:function(results,parser) doivent être dans le fichier de configuration car c'est par fichier de configuration.

Évidemment, l'étape ne fonctionnerait pas si elle n'est pas définie par fichier.

0
Albert 21 juil. 2015 à 07:55

Pouvez-vous essayer de renvoyer explicitement un { action="continue" } dans votre fonction before? Vous pourriez rencontrer une variante de ce problème - https://github.com/mholt/PapaParse/ numéros / 18

0
potatopeelings 20 juil. 2015 à 14:55