我正在使用Papaparse,我正在执行此代码。我有一个计数器(errorcounter),它计算异步发布请求返回的错误数。问题是我需要获取错误计数器的值,并且我正在通过警报进行测试。
我认为警报在解析完成之前的post请求之前执行。所有这些执行发生后如何执行警报:(解析,发送post请求,并在Jquery数据表中显示结果。
function verifyImportComputer() {
var errorcounter = 0;
resetImportComputer();
$('input[id=importFileComputer]').parse({
config: {
header: true,
skipEmptyLines: true,
step: function(results) {
$('#importErrorCounter').html(errorcounter);
$.each(results.data, function(index, data) {
$.post('com/import/getcomputerimport.cfm', {importData: JSON.stringify(data)}, function(data) {
var dataReturn = $.parseJSON(data);
var status = "";
jQuery.each(dataReturn.error, function() {
status+= "<div class='alert alert-danger'>"+this+"</div>";
errorcounter++;
});
ImportComputerTable.row.add([
dataReturn.asset_id,
dataReturn.asset_tag,
dataReturn.computer_type,
dataReturn.computer_name,
dataReturn.ip_address,
dataReturn.processor,
dataReturn.memory,
dataReturn.operating_system,
dataReturn.office,
dataReturn.graphics_card,
dataReturn.date_issued,
dataReturn.remarks,
dataReturn.is_active,
status
]).draw(false);
$('#importErrorCounter').html(errorcounter);
});
});
}
}
});
alert(errorcounter);
}
修改
我做了类似的事情,因为有人发布了回调,但没有任何反应。
function verifyImportComputer() {
errorcounter = 0;
resetImportComputer();
$('input[id=importFileComputer]').parse({
config: {
header: true,
skipEmptyLines: true,
step: function(results) {
$('#importErrorCounter').html(errorcounter);
$.each(results.data, function(index, data) {
$.post('com/import/getcomputerimport.cfm', {importData: JSON.stringify(data)}, function(data) {
var dataReturn = $.parseJSON(data);
var status = "";
jQuery.each(dataReturn.error, function() {
status+= "<div class='alert alert-danger'>"+this+"</div>";
errorcounter++;
});
ImportComputerTable.row.add([
dataReturn.asset_id,
dataReturn.asset_tag,
dataReturn.computer_type,
dataReturn.computer_name,
dataReturn.ip_address,
dataReturn.processor,
dataReturn.memory,
dataReturn.operating_system,
dataReturn.office,
dataReturn.graphics_card,
dataReturn.date_issued,
dataReturn.remarks,
dataReturn.is_active,
status
]).draw(false);
$('#importErrorCounter').html(errorcounter);
});
});
}
}
}, {
function() {
alert("haha");
alert(errorcounter);
}
});
}
答案 0 :(得分:0)
根据documentation这应该有效(虽然没有经过测试,但可能没有 - 可能是JSFiddle):
function verifyImportComputer() {
errorcounter = 0;
resetImportComputer();
$('input[id=importFileComputer]').parse({
config: {
header: true,
skipEmptyLines: true,
step: function(results) {
$('#importErrorCounter').html(errorcounter);
$.each(results.data, function(index, data) {
$.post('com/import/getcomputerimport.cfm', {
importData: JSON.stringify(data)
}, function(data) {
var dataReturn = $.parseJSON(data);
var status = "";
jQuery.each(dataReturn.error, function() {
status += "<div class='alert alert-danger'>" + this + "</div>";
errorcounter++;
});
ImportComputerTable.row.add([
dataReturn.asset_id,
dataReturn.asset_tag,
dataReturn.computer_type,
dataReturn.computer_name,
dataReturn.ip_address,
dataReturn.processor,
dataReturn.memory,
dataReturn.operating_system,
dataReturn.office,
dataReturn.graphics_card,
dataReturn.date_issued,
dataReturn.remarks,
dataReturn.is_active,
status
]).draw(false);
$('#importErrorCounter').html(errorcounter);
});
});
}
}
},
complete: function() {
function() {
alert("haha");
alert(errorcounter);
}
}
);
}
我认为我倾向于一次性添加行而不是每一步......