【发布时间】: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生成一个文档