Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Papa parse运行不正常_Javascript_Jquery_Papaparse - Fatal编程技术网

Javascript Papa parse运行不正常

Javascript Papa parse运行不正常,javascript,jquery,papaparse,Javascript,Jquery,Papaparse,使用PapaParse,我正在解析一个csv文件,然后将其添加到变量dataShort和dataTotal中。我能够在完整函数中记录dataShort和dataTotal,但不能记录在它下面。我想这是因为函数是异步运行的 因此,以下函数(changeData和dataReady)无法成功运行,因为它们需要Papa解析来完成解析。如何使changeData()生效;在函数parseCSV中,是否仅在上述解析完成时运行 函数解析CSV(evt){ var file=evt.target.files

使用PapaParse,我正在解析一个csv文件,然后将其添加到变量dataShort和dataTotal中。我能够在完整函数中记录dataShort和dataTotal,但不能记录在它下面。我想这是因为函数是异步运行的

因此,以下函数(changeData和dataReady)无法成功运行,因为它们需要Papa解析来完成解析。如何使changeData()生效;在函数parseCSV中,是否仅在上述解析完成时运行

函数解析CSV(evt){
var file=evt.target.files[0];
parse(文件{
标题:对,
动态打字:对,
完成:功能(结果){
dataShort=结果。数据;
dataTotal=结果。数据;
console.log(results.data);
log(“dataShort:+dataShort”);
console.log(“dataTotal:+dataTotal”);
}
});
log(“dataShort:+dataShort”);
console.log(“dataTotal:+dataTotal”);
changeData();
}
函数changeData(){
$.each(数据短、函数(索引、项){
if(项目[“CHILDoc中的项目]。长度>20){
item[“Items in CHILDoc”]=item[“Items in CHILDoc”]。子字符串(0,18)+“…”;
}
如果(项目[“儿童中心的Kwadrant Ondereel”]!=“Ingrijpende gebeurtenissen”&项目[“儿童中心的Waarde”]。长度>20){
item[“Waarde in CHILDoc”]=item[“Waarde in CHILDoc”]。子字符串(0,15)+“…”;
}
})
//console.log(dataShort);
//console.log(dataTotal);
dataReady();

}
异步运行时,您是对的。您可以从
complete
事件函数直接调用
changeData
函数。因此,请尝试以下方法:

function parseCSV(evt) {
  var file = evt.target.files[0];
  Papa.parse(file, {
    header: true,
    dynamicTyping: true,
    complete: function(results) {
      dataTotal = results.data;
      dataShort = results.data;
      changeData(dataShort);       
    }
  });
}

function changeData(var ds) {
  $.each(ds, function(index, item) {
    if (item["Items in CHILDoc"].length > 20) {
      item["Items in CHILDoc"] = item["Items in CHILDoc"].substring(0, 18) + "...";
    }
    if (item["Kwadrant onderdeel in CHILDoc"] != "Ingrijpende gebeurtenissen" && item["Waarde in CHILDoc"].length > 20) {
      item["Waarde in CHILDoc"] = item["Waarde in CHILDoc"].substring(0, 15) + "...";
    }
  });
  dataReady();
}
在这里,我更改了
changeData
函数以接受结果数据,并从
complete
函数调用它。请注意,我删除了
dataShort
dataTotal
变量,因为我在这里没有看到它的任何用途,但如果您在代码中的某个地方进一步使用它们,请将其还原回来


编辑:
dataShorts
在调用
changeData
函数后被修改,但
dataTotal
仍将具有原始结果。我假设您在顶部的某个位置同时声明了
dataShort
dataTotal
变量。

我希望发生的是,数组dataShort中的数据确实会被函数changeData缩短,但数组dataTotal保持不变。现在,当我用changeData()运行上面发布的代码时;放置在完整的results.data中,数据由changeData而不是dataShort更改。我使用dataShort添加一个带有文本的跨度,这样即使长的数据条目也适合我所做的div。dataTotal用于将标题添加到缩短的跨距中,以便仍然可以阅读文本。