在我看来,我有多个复选框。
因此,我试图在单击某个元素时生成该选中元素的文档文件。
因此,我将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);
例如,我得到一个值,而不是树值。
我的代码有什么问题?这是做这件事的正确方法吗?如果你有任何想法,任何建议请帮助。
1条答案
按热度按时间gcuhipw91#
您正在向返回一个文件的函数发送一个数组。也许通过循环数组来生成文件并发回一个文件数组?
或者,在js中循环遍历数组,您将为数组中的每个项目返回一个文件。这是对数组中每个元素的一个ajax调用。