jquery—如何使用laravel在ajax请求发送的ID数组上循环

jm2pwxwz  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(230)

我正试图根据ajax请求发送的ID导出多个word文件。
因此,我使用以下脚本:

<script>
$(document).ready(function() {
  $('#numero_projet').change(function() {
    var id_projet = $(this).find("option:selected").data("id");
    $('#generer').click(function() {
      alert("hello");
      var checkValues = $('input[name=casting_checked]:checked').map(function() {
          return $(this).data('id');
        })
        .get();
      var join_selected_values = checkValues.join(",");
      $.ajax({
        url: "generer/"+id_projet+"/"+checkValues,
        type: 'get',
        headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        data: {
          ids: join_selected_values
        },
        success: function (data) { }
      });
    });
  });
});
</script>

以及以下控制器:

public function generer()
{
    if (request()->ajax()) {
        $id_projet = request('id_projet');
        $id_casting = request('ids');
        $idsArray=explode(",",trim($id_casting,','));
        if (!empty($idsArray)) {
            $id_contrat = Projet_Casting::where('id_projet',$id_projet)->whereIn('id_casting',$i)->value('id_contrat');
            $id_modele_contrat = Contrat::where('id_contrat',$id_contrat)->value('id_modele_contrat');
            $model_file = Model_Contrat::where('id_modele_contrat',$id_modele_contrat)->value('fichier');
            $templateProcessor = new TemplateProcessor('/storage/app/public/uploads/modeles_contrat/'.$model_file);
            $filename= $id_contrat;

            $templateProcessor->saveAs( $filename.'.docx');

            return response()->download( $filename.'.docx');
        }
    }
}

如果 $idsArray 包含3个ID,它应生成3个word文件。
但使用这段代码,它只生成一个文档,而不是多个文档。
如果你有任何想法,请帮忙。

qojgxg4l

qojgxg4l1#

不可能在一个请求中下载多个文件。您需要先压缩所有文件,然后返回下载该压缩文件的响应。

相关问题