目录
分享
如何使用 AJAX 将数组发送到控制器?
jquerylaravel
浏览量:65
编辑于:2023-04-12 23:00:21
我有一个带有复选框的数据表,以及一个允许通过数组填充表 ITEMS [] 的验证按钮,我想使用 ajax 将此数组发送到我的控制器。请帮忙。
这是我的数据表:
<div id='form2'>
<h3>form group 2</h3>
<h4>DATE : <span id="dateE"></span></h4>
<h4>chantier : <span id="ch"></span></h4>
<div class="form-group col-md-offset-5 ">
<button class="btn btn-success add-all" type="submit" id="hide">Pointage</button>
</div>
<table class="table table-bordered" id="mytable">
<tr>
<th>Archive</th>
<th><input type="checkbox" id="check_all"></th>
<th>S.No.</th>
<th>matricule</th>
<th>nom & prenom</th>
<th>salaire net</th>
<th>nbre de jour </th>
<th>prime</th>
</tr>
@if($salaries->count())
@foreach($salaries as $key => $salarie)
<tr id="tr_{{$salarie->id}}">
<td>archive</td>
<td><input type="checkbox" class="checkbox" data-id="{{$salarie->id}}"></td>
<td>{{ ++$key }}</td>
<td>{{ $salarie->matricule }}</td>
<td >{{ $salarie->nom }} {{ $salarie->prenom }}</td>
<td>
<input type="hidden" name="salaire" value="{{ $salarie->salairenet }}">
{{ $salarie->salairenet }}
</td>
<td ><input type="text" class='input2' name="nbreJ" class="form-control" ></td>
<td><input type="text" name="prime" class="form-control" value="0"></td>
</tr>
@endforeach
@endif
</table>
</div>
这是我的代码jquery:
$('.add-all').on('click', function() {
var items = [];
let valu = $('#datePicker').val();
$("tr").each(function(i,r) {
if ( i > 0 && $(r).find("input").first().prop("checked")) {
items.push({"matricule": r.cells[3].innerText, "salaire": r.cells[5].innerText, "date" : valu })
}
});
//ajax
$.ajax({
method : 'POST',
url : 'mois',
data : items,
success : function(data) {
if (!data.success) {
if (data.errors.name) {
$('.throw_error').fadeIn(1000).html(data.errors.name);
}
} else {
$('#success').fadeIn(1000).append('<p>' + data.posted + '</p>');
}
}
});
});
路线:
Route::post('mois', 'SalarieController@addMultiple');
控制器:
public function addMultiple(Request $request)
{
dd($request->all());
}
解决方案:
try this you forgot to pass token and json key
$.ajax({
method : 'POST',
url : 'mois',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data : {"items":items}, // pass in json format
success : function(data) {
console.log(data);
},
error : function(err){
console.log(err)
}
});
//fin ajax
});
in your contoller
public function addMultiple(Request $request){
return response()->json([
'status'=>200,
'message' => "success",
'data' => $request->all()
]);
}