Я хочу отправить ajax вызов для переключения каждой вкладки, и при успешном запросе ajax будет получен набор данных для другого содержимого вкладки.
Например, при нажатии на тип премии будет запрос ajax, который создаст таблицу данных и успешно вернется обратно, чтобы добавить сюда. Данные успешно возвращаются, но таблица не составлена. вот снимок этого ...
Это мой файл просмотра .... Работа над проектом laravel.
<style>
.nav-tabs li a {
padding: 0.75rem 1.25rem;
}
.nav-tabs.vertical li {
border: 1px solid #ddd;
display: block;
width: 100%
}
.tab-pane {
padding: 25px 0
}
</style>
<section>
<div class="container-fluid">
<div class="card">
<div class="card-body">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" href="#" id="Leave_type-tab" data-toggle="tab" data-target="#Leave_type" role="tab" aria-controls="Leave_type" aria-selected="true">Leave</a>
</li>
<li class="nav-item">
<a class="nav-link " href="{{route('award_type.index')}}" id="Award_type-tab" data-toggle="tab" data-target="#Award_type" role="tab" aria-controls="Award_type" aria-selected="false">Award Type</a>
</li>
<li class="nav-item">
<a class="nav-link" id="contact-tab" data-toggle="tab" data-target="#Contact" role="tab" aria-controls="Contact" aria-selected="false">Contact</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container-fluid">
<div class="card">
<div class="card-body">
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="Leave_type" role="tab" aria-labelledby="Leave_type-tab">
<!--Contents for Leave starts here-->
Leave
<!--Contents for Leave ends here-->
</div>
<div class="tab-pane fade " id="Award_type" role="tab" aria-labelledby="Award_type-tab">
<div class="card-header"><h3 class="card-title">Add New Award Type</h3></div>
<div class="col-md-4 form-group">
<label><strong>{{trans('file.Award Type')}} *</strong></label>
<input type="text" name="award_type" id="award_type" class="form-control"
placeholder="{{trans('file.Award Type')}}">
</div>
<div class="col-md-4 form-group">
<input type="submit" name="award_type_submit" id="award_type_submit" class="btn btn-success" value="Save" />
</div>
</div>
<div class="tab-pane fade" id="Contact" role="tab" aria-labelledby="contact-tab">
<!--Contents for Contact starts here-->
Contact
<!--Contents for Contact ends here-->
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="card">
<div class="card-body">
<div id="my_table"></div>
</div>
</div>
</div>
</section>
<script type="text/javascript">
$('[data-toggle="tab"]').click(function(e) {
let loadurl = $(this).attr('href');
$.ajax({
url: loadurl,
dataType: "json",
success: function (result) {
$('#my_table').html(result.html);
}})
});
</script>
Мой файл контроллера, который получит запрос ajax ....
<?php
namespace App\Http\Controllers\Constants;
use App\AwardType;
use App\Http\Controllers\Controller;
class AwardTypeController extends Controller {
public function index()
{
if (request()->ajax())
{
return datatables()->of(AwardType::select('id','award_name')->get())
->setRowId(function ($award_type)
{
return $award_type->id;
})
->addColumn('action', function ($data)
{
if (auth()->user()->can('user-edit'))
{
$button = '<button type="button" name="edit" id="' . $data->id . '" class="edit btn btn-primary btn-sm">Edit</button>';
$button .= ' ';
$button .= '<button type="button" name="delete" id="' . $data->id . '" class="delete btn btn-danger btn-sm">Delete</button>';
return $button;
} else
{
return '';
}
})
->rawColumns(['action'])
->make(true);
}
$view = view('settings.constants.award_type')->render();
return response()->json(['html'=>$view]);
}
}
И, наконец, датируемый .....
<div class="table-responsive">
<table id="award_type-table" class="table table-striped">
<thead>
<tr>
<th class="not-exported"></th>
<th>{{trans('file.Award name')}}</th>
<th>{{trans('file.action')}}</th>
</tr>
</thead>
</table>
</div>
<script type="text/javascript">
$(document).ready(function(){
var table_table = $('#award_type-table').DataTable({
responsive: true,
fixedHeader: {
header: true,
footer: true
},
processing: true,
serverSide: true,
ajax:{
url: "{{ route('award_type.index') }}",
},
columns:[
{
data: null,
orderable:false,
searchable:false
},
{
data: 'award_name',
name: 'award_name',
},
{
data: 'action',
name: 'action',
orderable: false
}
],
"order": [],
'language': {
'lengthMenu': '_MENU_ {{trans("file.records per page")}}',
"info": '{{trans("file.Showing")}} _START_ - _END_ (_TOTAL_)',
"search": '{{trans("file.Search")}}',
'paginate': {
'previous': '{{trans("file.Previous")}}',
'next': '{{trans("file.Next")}}'
}
},
'columnDefs': [
{
"orderable": false,
'targets': [0, 2],
},
{
'render': function(data, type, row, meta){
if(type === 'display'){
data = '<div class="checkbox"><input type="checkbox" class="dt-checkboxes"><label></label></div>';
}
return data;
},
'checkboxes': {
'selectRow': true,
'selectAllRender': '<div class="checkbox"><input type="checkbox" class="dt-checkboxes"><label></label></div>'
},
'targets': [0]
}
],
'select': {style: 'multi', selector: 'td:first-child'},
'lengthMenu': [[10, 25, 50, -1], [10, 25, 50, "All"]],
dom: '<"row"lfB>rtip',
buttons: [
{
extend: 'pdf',
text: '{{trans("file.PDF")}}',
exportOptions: {
columns: ':visible:Not(.not-exported)',
rows: ':visible'
},
},
{
extend: 'csv',
text: '{{trans("file.CSV")}}',
exportOptions: {
columns: ':visible:Not(.not-exported)',
rows: ':visible'
},
},
{
extend: 'print',
text: '{{trans("file.Print")}}',
exportOptions: {
columns: ':visible:Not(.not-exported)',
rows: ':visible'
},
},
{
extend: 'colvis',
text: '{{trans("file.Column visibility")}}',
columns: ':gt(0)'
},
],
});
new $.fn.dataTable.FixedHeader( table_table );
});
</script>