J'ai une fonction csv d'exportation, cela a bien fonctionné avec laravel. Mais maintenant je veux appeler la fonction d'exportation via ajax et utiliser la méthode post, mais je n'y ai pas de respone. Je peux envoyer une variable du contrôleur laravel à la réponse, mais je ne peux pas envoyer un téléchargement de fichier.Exporter CSV en utilisant Laravel via Ajax
Voici mon code:
route.php
Route::get('/title/show', '[email protected]');
Route::post('/title/show', '[email protected]');
show.blade.php
<script>
$(document).ready(function() {
$('#exportFromDB').click(function() {
$.ajax({
url: "",
type: "post",
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
data: {},
success: function (response) {
var a = document.createElement("a");
a.href = response.file;
a.download = response.name;
}
})
})
})
Titl eController.php:
$dataExport['Oversea'] = $dataOversea;
$this->titleRepository->export('csv', $properties, $dataExport);
TitleRepository.php
public function export($type, $properties, $data)
{
if (in_array($type, self::EXPORT_TYPE)) {
try {
return Excel::create($properties['_title'], function ($excel) use ($data, $properties) {
$excel->setTitle($properties['_title']);
$excel->setCreator($properties['_creator'])
->setCompany($properties['_company']);
$excel->setDescription($properties['_description']);
$excel->sheet('Sheet', function ($sheet) use ($data) {
foreach ($data as $item) {
$sheet->fromArray($item);
}
});
})->export($type);
} catch (Exception $error) {
throw $error;
}
}
}
Comment puis-je les corriger? Merci!
tks tellement, votre idée est géniale, mais je ne peux toujours pas retourner le nom du fichier.Je change -> export() en -> store() et var_dump ($ this-> titleRepository-> export ('csv ', $ properties, $ dataExport)) mais il retourne null; Pouvez-vous me montrer comment réécrire mon contrôleur et référentiel en détail s'il vous plaît :( –
Au lieu de retourner Excel :: créer, l'assigner à la variable. Excel :: create et than dd ($ export) Après cela if ($ export) { return $ export ['full']; } else { $ message = empty ($ data)? 'Il n'y a aucun enregistrement exporter ': "Quelque chose s'est mal passé s'il vous plaît essayez againg"; \ Session :: flash (' erreur ', $ message); return redirect (' liste-client '); } –
S'il vous plaît a ccept ma réponse si ça marche. –