我正试图在我的应用程序中使用AJAX和Laravel导入一个Excel文件。excel导入的表单是一个内部表单(另一个表单中的表单)错误处理似乎部分有效,但错误消息并不总是正确显示在前端。
我的JAVASCRIPT代码:
$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#submitUnits').on('click', function(e) {
e.preventDefault();
var formData = new FormData();
formData.append('unitsFile', $('#unitsFile')[0].files[0]);
formData.append('buildingId', $('#buildingId').val());
var buildingId = $('#buildingId').val();
$.ajax({
url: '/building-units-import/' + buildingId,
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response) {
console.log('successsss:' + response.errors);
$('#errorMessages').empty();
if (response.errors && response.errors.length > 0) {
$('#errorTable').show();
$.each(response.errors, function(index, error) {
var row = $('<tr>').appendTo('#errorMessages');
row.append($('<td>').text(error.row));
row.append($('<td>').text(error.message));
});
} else {
$('#errorTable').hide();
alert('File imported successfully.');
}
},
error: function(xhr) {
console.log("error:" + xhr);
}
});
});
});
导入Excel文件后:
在控制台中,它显示如下:
error:[object Object]
在网络预览中:显示422个错误代码和实际Excel错误:
{message: "اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© 2.Ø§ÙØ¹Ùار ØºÙØ± Ù
ÙØ¬Ùدة. (Ù 6 أخطاء إضاÙÙØ©)",â¦} errors : [["There was an error on row 2. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© Ø§ÙØ¹Ùار ØºÙØ± Ù
ÙØ¬Ùدة."],â¦] 0 : ["There was an error on row 2. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© Ø§ÙØ¹Ùار ØºÙØ± Ù
ÙØ¬Ùدة."] 1 : ["There was an error on row 3. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© Ø§ÙØ¹Ùار ØºÙØ± Ù
ÙØ¬Ùدة."] 2 : ["There was an error on row 2. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© ÙÙØ¹ اÙÙØØ¯Ø© ØºÙØ± Ù
ÙØ¬Ùدة."] 3 : ["There was an error on row 3. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© ÙÙØ¹ اÙÙØØ¯Ø© ØºÙØ± Ù
ÙØ¬Ùدة."] 4 : ["There was an error on row 2. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© Ø§ÙØ·Ø§Ø¨Ù ØºÙØ± Ù
ÙØ¬Ùدة."] 5 : ["There was an error on row 3. اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© Ø§ÙØ·Ø§Ø¨Ù ØºÙØ± Ù
ÙØ¬Ùدة."] 6 : ["There was an error on row 3. ØÙÙ Ø¹ÙØ¯ Ø§ÙØ¯Ùاع اÙÙ
دÙÙ ØºÙØ± Ù
ÙØ¬Ùد."] message : "اÙÙÙÙ
Ø© اÙÙ
ØØ¯Ø¯Ø© 2.Ø§ÙØ¹Ùار ØºÙØ± Ù
ÙØ¬Ùدة. (Ù 6 أخطاء إضاÙÙØ©)"
但我想在成功的案例中得到这些错误的回应。
这是我的控制器端点:
public function import_building_units(Request $request, $building_id)
{
$request->validate([
'unitsFile' => 'required|file|mimes:xlsx,xls,csv', // Use 'unitsFile' as per your form field name
]);
// Access the uploaded file directly
$file = $request->file('unitsFile');
$import = new BuildingUnitsImport($building_id);
Excel::import($import, $file);
$errors = $import->getErrors();
if (empty($errors)) {
// Import successful, return appropriate response
return response()->json(['success' => 'File imported successfully']);
} else {
// Import failed, return detailed error messages
return response()->json(['errors' => $errors]);
}
}