【发布时间】:2020-11-24 08:01:26
【问题描述】:
我在提交表单数据并在另一个视图中显示时遇到问题,我得到了除数组数据类型 ($mat_res) 之外的所有数据,这是我的代码:
查看:
var mat_codes = [];
...
console.log(mat_codes);//displays an array with data
$('#rest_form').on('submit', function(event) {
//event.preventDefault();
var form_data = $(this).serialize();
var personnel = $('#personnel').val();
var fonction = $('#fonction').val();
var service = $('#service').val();
var user_id = $('#user_id').val();
var remarque = $('#remarque').val();
$.ajax({
url: "{{ route('Restituter.createRest') }}",
method: "POST",
data: {
mat_codes: mat_codes,
personnel: personnel,
fonction: fonction,
remarque: remarque,
user_id: user_id
},
success: function(data) {
mat_codes = [];
$('#rest_form')[0].reset();
}
});
});
控制器:
public function createRest(Request $request) {
...
$mat_res = array();
for ($i = 0; $i < count($request->mat_codes); $i++) {
if(($request->mat_codes)[$i] != "") {
Restitution::firstOrCreate(['mat_code' => ($request->mat_codes)[$i], 'personnel_id' => $personnel->id], ['mat_code' => ($request->mat_codes)[$i], 'personnel_id' => $personnel->id, 'num' => $num, 'mois' => date('m'), 'restitution_code' => $num . "/" . date('m') . "/" . date("Y"), 'user_id' => $request->user_id]);
Materiel::where('mat_code', '=', ($request->mat_codes)[$i])->update(array('mat_etat' => 2));
$mat_res[$i] = DB::table('Materiels')->join('Types', 'Materiels.type_id', '=', 'Types.type_id')->select('Types.type_designation', 'Materiels.mat_designation', 'Materiels.mat_description', 'Materiels.mat_ns', 'Materiels.note')->where('mat_code', ($request->mat_codes)[$i])->first();
}
}
...
return view('Restitution', compact('nom', 'fonction', 'imei1', 'imei2', 'remarque', 'rest_code'), ['mat_res' => $mat_res]);
}
第二个视图:
@foreach($mat_res as $mat_res)
...
<td>{{$mat_res->type_designation}}</td>
...
@endforeach
【问题讨论】:
-
可能是因为
mat_codes没有定义。 @Sami 你检查过 Javascript 控制台吗? -
($request->mat_codes)[$i] != "")可以简化为isset($request->mat_codes[$i])仅供参考。是否启用了警告/错误?如果是这样,你有没有,如果有,它们是什么?您是否尝试通过将值输出到日志来对此进行调试? -
您没有在您的 ajax 上分配任何变量调用 mat_codes
-
这证明@MD.JubairMizan 是对的。您不会在控制器中期望的 ajax 中发送所有数据。此外,这可能不相关,您的控制器代码容易出错。很难阅读。我认为
Restitution::firstOrCreate(...)有错误,您似乎中途中断了数组的构建。 -
@DimitriMostrey 非常感谢,感谢您,我解决了这个问题。
标签: php arrays laravel laravel-5 eloquent