PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

Fast中AJAX表单提交后如何实现跳转

管理员 2024-12-14
Fastadmin
7

Fast中AJAX表单提交后如何实现跳转

Fast默认采用iframe窗加载页面,直接使用JS提供的跳转方法会出现各种问题,分享一下在项目中自己使用的方法

我们只需要在表单回调事件中加入如下代码,即可实现完美的跳转并且兼容Toastr的提示

Form.api.bindevent($("form[role=form]"), function(data, ret){    //注意这里显示提示信息 一定要加上 top    top.Toastr.success(ret.msg);    //新增窗口并关闭原来的  ----- 也就是跳转    var that = top.window.$("ul.nav-addtabs li.active");    var oldId = that.find('a').attr('node-id')    Fast.api.addtabs(url, title, icon);    top.window.$("ul.nav-addtabs li#tab_" + oldId + " .close-tab").trigger("click");}
提示:这里的跳转方法不适用于 Fast默认的crud页面,fast默认的页面打开iframe然后关闭,是没有跳转操作的。

看了上面的操作,可能有朋友说,哎你这个代码每个要跳转的表单都要写一遍吗?懂不懂啥叫公用啊?

下面就告诉大家如何封装,更简单的一行调用

  • 首先找到 public/assets/js/backend-init.js 这个文件
  • 默认这个文件是这样shen儿的

    define(['backend'], function (Backend) {});

    你需要给他改成这样

    define(['backend', 'fast'], function (Backend, Fast) {  //添加Backend的扩展方法  $.extend(true, Backend, {      api:  {          redirect: function(url, title, icon) {              var that = top.window.$("ul.nav-addtabs li.active");              var oldId = that.find('a').attr('node-id')              //新增窗口              Fast.api.addtabs(url, title, icon);              //关闭原来的              top.window.$("ul.nav-addtabs li#tab_" + oldId + " .close-tab").trigger("click");          },      }  });}
  • 然后上面调用的代码就可以改成:

    Form.api.bindevent($("form[role=form]"), function(data, ret){  //如果我们需要在提交表单成功后做跳转,可以在此使用Fast.api.redirect("链接") 进行跳转  top.Toastr.success(ret.msg);  Fast.api.redirect(ret.url);});
    PS:如果你的backend-init.js和默认的不一样 那说明你是个大佬啦,肯定能看懂我这个代码怎么改的,所以就不考虑backend-init.js不一样的情况了
    PSS: 我不清楚backend-init.js修改之后 程序关闭debug模式之后是否需要重新打包哦~请各位大佬动动手查询一下吧~

上述方法只是我自己实践摸索出来的,可能大家都有自己的方法,如果有更方便更实用的方法,欢迎在评论区留言哦~


下面是常用的跳转写法,可能会导致的问题我也写在下面了

这里不是正文哦,可以不用看~~

1.错误示范: window.location.href

Form.api.bindevent($("form[role=form]"), function(data, ret){    window.location.href = '链接'}
在fast的默认的页面中直接使用window.location.href,会出现 浏览器输入框内url和当前页面url不符,页面窗口名称不对等等各种问题

2.错误示范:parent.localion.href

Form.api.bindevent($("form[role=form]"), function(data, ret){    parent.location.href = '链接'}
直接使用parent.location.href会让页面重新刷新。原来打开的tab消失,体验不是很好

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部