Jquery laravel刷新页面并在插入记录后转到正确的选项卡
我有一个引导数据表在模态中。 当我点击这个数据表中的一个按钮时,一条新记录被插入数据库,模式自动关闭,但在父窗口中我看不到新记录。当我在成功ajax响应中放入location.reload时,记录是正常的,但是页面重新加载并转到活动选项卡(它是不正确的)。我尝试了location.hash='#tab2';但一切都没有改变 这是我的JS函数:Jquery laravel刷新页面并在插入记录后转到正确的选项卡,jquery,laravel,tabs,Jquery,Laravel,Tabs,我有一个引导数据表在模态中。 当我点击这个数据表中的一个按钮时,一条新记录被插入数据库,模式自动关闭,但在父窗口中我看不到新记录。当我在成功ajax响应中放入location.reload时,记录是正常的,但是页面重新加载并转到活动选项卡(它是不正确的)。我尝试了location.hash='#tab2';但一切都没有改变 这是我的JS函数: function addMemberToLessonDirect(id) { console.log(id);
function addMemberToLessonDirect(id)
{
console.log(id);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
method: 'POST', // Type of response and matches what we said in the route
url: '/admin/lessons/addMember/licenseMemberId', // This is the url we gave in the route
data: {'licenseMemberId' : id},
success: function(response){ // What to do if we succeed
console.log(response);
//location.hash = '#tab2';
location.reload();
}
});
}
该表由Yajra Datatables生成:
public function getMembersDirect()
{
$members = DB::table('members')
->select(['license_member.id as id','nip','firstname','lastname', DB::raw('DATE_FORMAT(birthdate, "%d-%m-%Y") as birthdate'),'description'])
->join('license_member','members.id','license_member.member_id')
->join ('licenses','licenses.id','license_member.license_id')
->whereNull('members.deleted_at')
->orderBy('members.lastname','asc');
return Datatables::of($members)
->addIndexColumn()
->addColumn('action', function ($member) {
$clic="addMemberToLessonDirect($member->id)";
$link='<a onclick="'.$clic.'" class="btn btn-info btn-xs"><i class="fa fa-arrow-up" title="Add to lesson"></i></a>';
return $link;})->make(true);
}
公共函数getMembersDirect()
{
$members=DB::表('members')
->选择(['license_member.id as id'、'nip'、'firstname'、'lastname',DB::raw('DATE_格式(birthdate,“%d-%m-%Y”)作为birthdate')、'description'])
->加入('license\u member'、'members.id'、'license\u member.member\u id')
->加入('licenses'、'licenses.id'、'license\u member.license\u id')
->whereNull('members.deleted_at')
->orderBy('members.lastname','asc');
返回Datatables::of($members)
->addIndexColumn()
->addColumn('action',函数($member){
$clic=“addMemberToLessonDirect($member->id)”;
$link='1
{{csrf_field()}}
{{{('lesson.update')}
#{{{{('member.id')}
{{{{('member.firstname')}
@foreach($lesson->lesson许可证成员为$llm)
{{$llm->licenseMember->member->id}
{{$llm->licenseMember->member->firstname}
{{$llm->licenseMember->member->lastname}
{{csrf_field()}}
{{method_field('DELETE')}
@endforeach
{{{('lesson.addMember')}
{{{('member.list')}
{{--@include('admin.lessons.lessons_members_direct')--}
我刚刚尝试在我的一个单页应用程序上同时使用这两种应用程序,效果良好:
// first change the url
location.hash = '#tab2'; // or location.href = "#tab2"
// then refresh
location.reload();
但问题是,由于第一个选项卡始终处于活动状态,因此应该更改
为了在使用ajax时显示新记录,除非使用Vue或Angular等模型视图绑定框架,否则始终需要在ajax成功回调中手动追加新记录
或者,如果重新加载页面,则活动选项卡应根据结果进行更改。
您可以使用jquery触发活动选项卡上的更改,如下所示:
$('a[href="#tab2"]').trigger('click');
我只是尝试在我的一个单页应用程序上同时使用这两种应用程序,效果很好:
// first change the url
location.hash = '#tab2'; // or location.href = "#tab2"
// then refresh
location.reload();
但问题是,由于第一个选项卡始终处于活动状态,因此应该更改
为了在使用ajax时显示新记录,除非使用Vue或Angular等模型视图绑定框架,否则始终需要在ajax成功回调中手动追加新记录
或者,如果重新加载页面,则活动选项卡应根据结果进行更改。
您可以使用jquery触发活动选项卡上的更改,如下所示:
$('a[href="#tab2"]').trigger('click');
谢谢你的回答。我介绍了你的第二个解决方案,触发器$('a[href=“#tab2”]”)。触发器('click');只有在我不写location.reload()时才有效;,如果我重新加载页面,将转到第一个选项卡。如果我删除重新加载触发器,则模式不会关闭,父页面也不会重新加载内容。感谢您的回答。我使用了第二个解决方案,触发器$('a[href=“#tab2”]”)。触发器('click');只有在我不编写location.reload()时才有效,如果我重新加载,页面将转到第一个选项卡。如果我删除重新加载触发器,则模式不会关闭,父页面也不会重新加载内容。