javascript - 将 id 从 ajax 发送到控制器以删除数据
问题描述
我正在通过 Ajax 从数据库中获取一些用户数据。我在表格中添加了一些复选框以删除数据。我为此编写代码,但我不知道如何将用户 ID 从 ajax 发送到控制器。如果有人能帮助我,那就太好了。下面是我的代码
//Javascript
$(document).ready(function() {
$(document).ready(function () {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
$('select[name="class_id"]').on('change', function() {
var classID = $(this).val();
if(classID) {
$.ajax({
url: '/attendance/ajax/'+classID,
type: "GET",
dataType: "json",
success:function(data) {
var markup = '';
markup += '<tr><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 2%" class="align-middle text-center">#</th> <th style="width: 15%" class="text-center">Student ID<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Student Name<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Attendance<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Date<input type="text" class="form-control" disabled></th> <th style="width: 15%;" class="align-middle text-center">Actions</th> <tr>';
$.each(data, function(key, value) {
markup += '<tr> <td><input class="checkBoxes" type="checkbox" name="checkBoxArray[]"></td> <td><input type="hidden" value="'+value.id+'" name="id[]">' + value.id + '</td> <td><input type="hidden" value="'+value.student_id+'" name="student_id[]">' + value.student_id + '</td> <td><input type="hidden" value="'+value.first_name+'" name="first_name[]"><input type="hidden" value="'+value.last_name+'" name="last_name[]">' + value.first_name+ ' ' + value.last_name + '<td><input type="hidden" value="'+value.attendance+'" name="attendance[]">' + value.attendance + '</td>' + '<td><input type="hidden" value="'+value.created_at+'" name="created_at[]">' + value.created_at + '</td>' + '<td style=" width=12%" class="text-center"> <a><button title="Edit" class="btn btn-outline-primary"><span class="fas fa-pencil-alt"></span></button></a> </td>' + '</td> <tr>';
});
$('table[id="studentsData"]').html(markup);
}
});
}
});
});
//提交删除按钮
<form method="post" action="delete/attendance" class="form-inline">
{{csrf_field()}}
{{method_field('delete')}}
<div class="form-group">
<select name="checkBoxArray" id="" class="form-control">
<option value="">Delete</option>
</select>
</div>
<div class="form-group">
<input type="submit" name="delete_all" class="btn btn-primary">
</div>
</form>
//路线
Route::delete('/students/delete/attendance', 'AttendanceController@deleteAttendance');
//控制器
public function deleteAttendance(Request $request, $id) {
if ($request->delete_single) {
$this->destroy($id);
}
if(isset($request->delete_all) && !empty($request->checkBoxArray)) {
$attendances = StudentsAttendance::findOrFail($request->checkBoxArray);
foreach($attendances as $attendance) {
$attendance->delete();
}
return redirect()->back();
} else {
return redirect()->back();
}
}
解决方案
由于您想将一组 id 发送到您的操作,请先创建一个 POST 路由:
Route::post('/students/delete/attendance', 'AttendanceController@deleteAttendance');
然后你必须附加id
每个复选框,如:
<input class="checkBoxes" type="checkbox" name="checkBoxArray[]" value="'+value.id+'">
并将您的表单更新为:
<form method="post" action="/students/delete/attendance" class="form-inline">
试一试,通过在顶部deleteAttendance
添加来检查您是否在操作中获得了所有选定的 id :dd()
public function deleteAttendance(Request $request, $id) {
dd( $request->checkBoxArray );
...
}
推荐阅读
- eloquent - 在 Laravel 错误中使用 Group by 加入查询
- reactjs - 为什么数字没有按顺序上升?
- android - 在 switchmap 中启动协程
- python - Python 上下文管理器
- python - 在 Ariadne GraphQL 响应中添加标头
- .net - 如何从 NuGet 安装包
- android - 运行后我无法使用 Flutter 运行我的第一个应用程序我收到此错误
- flutter - 当我运行我的代码时,为什么在 _WidgetsAppState 中找不到路由 RouteSettings("/coursePage", null) 的生成器
- reactjs - Tailwind css 在部署时不工作
- winapi - 如何在winapi-rs中获取IWICImagingFactory的实例