【问题标题】:Generate multiple documents at once using laravel/ajax使用 laravel/ajax 一次生成多个文档
【发布时间】:2021-07-22 22:10:40
【问题描述】:

我认为有多个复选框。

所以我试图在我点击一个元素时生成这个选中元素的文档文件。

所以我一次传递我的 ajax 请求多个 id,然后根据 ajax 请求发送的每个 id 生成多个文档文件。

以下脚本描述了我在做什么:

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

我控制台中的checkValues

(3) [15, 17, 19]
0: 15
1: 17
2: 19
length: 3

在我的控制器中,我有以下代码:

public function generer(){
    $id_projet = request('id_projet');
    $id_casting = request('ids');
    $id_contrat = Projet_Casting::where('id_projet',$id_projet)->where('id_casting',$id_casting)->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('C:/Users/ss/Documents/GitHub/casting/storage/app/public/uploads/modeles_contrat/'.$model_file);
    $filename= $id_contrat;
    $templateProcessor->saveAs( $filename.'.docx');
    return response()->download( $filename.'.docx');
}

问题是这段代码只生成一个文档而不是多个文档,因为在这种情况下,我的 ajax 请求发送了一个带有树 ID 的数组,它应该生成树文档。

例如,当我执行dd( $id_contrat); 时,我得到一个值而不是树值。

我的代码有什么问题?这是做这件事的正确方法吗?如果您有任何想法,请提供任何建议。

【问题讨论】:

  • 您可以使用checkValues.join() 作为逗号分隔的字符串发送ID
  • @elegant-user ,感谢您的帮助,但我该怎么做呢?我想通过ajax为每个id senf生成一个文档

标签: jquery ajax laravel


【解决方案1】:

您将一个数组发送到一个返回一个文件的函数。也许循环遍历数组以生成文件并发送回文件数组?

或者,在 JS 中循环遍历数组,您将获得数组中每个项目的文件。这是对数组中每个元素的一次 ajax 调用。

【讨论】:

  • 感谢您的回答,我仍然是 ajax 的初学者,如果您能解释更多如何在 JS 中循环遍历数组并为数组中的每个项目取回文件跨度>
  • 您可以将 ajax 调用移动到 $.each 函数中,替换这一行 checkValues.push($(this).data('id'));使用 ajax 调用并发送 [$(this).data('id')] 代替检查值,假设函数需要一个数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多