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修复,程序杀毒,插件定制都可以提供最佳解决方案。