我有一个带复选框的数据表,以及一个允许通过数组填充表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());
}
答案 0 :(得分:1)
尝试此操作,您忘记传递令牌和json密钥
$.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
});
在您的控制器中
public function addMultiple(Request $request){
return response()->json([
'status'=>200,
'message' => "success",
'data' => $request->all()
]);
}
答案 1 :(得分:0)
(我没有足够的代表将此评论发表)
您是否设置了jQuery Ajax以使用CSRF令牌? https://laravel.com/docs/5.8/csrf#csrf-x-csrf-token
Laravel带有Axios(它非常出色,并且已经配置为使用CSRF令牌)来进行HTTP请求,您是否尝试过使用它?
Axios请求看起来像这样;
axois.post('/mios', items)
.then((response) => {
console.log(response)
})
.catch((error) => {
console.log(error)
})