$('[com-view]').on('click', function (e) {// render($(this).data('view'));// hashRoute.render($(this).data('view'));view.render($(this).data('view'));})// 路由var HashRoute = function HashRoute(params) {var _self = this;this.init = function () {window.addEventListener('DOMContentLoaded', function () {console.log('DOMContentLoaded');})$(document).ready(_self.setRoute);// 1.直接更改浏览器地址,在最后面增加或改变#hash; // 2.通过改变location.href 或 location.hash的值; // 3.通过触发点击带锚点的链接; // 4.浏览器前进后退可能导致hash的变化,前提是两个网页地址中的hash值不同window.addEventListener('hashchange', _self.setRoute)}this.setRoute = function () {var route = layui.router();// layer.msg('只想弱弱提示<br>' + location.href);// console.log(route.href);if(route.href != undefined) {route.href = route.href.substr(route.href.length - 1, 1) == '/' ? route.href + setter.entry : route.href;}ajaxModel.ajaxMethod({url: setter.views + (route.href ? route.href : setter.entry) + setter.engine,dataType: 'html',successfn: function (e) {$('.layadmin-tabsbody-item.layui-show').html(e);},errorfn: function (e) {// e.status === 404 ? _self.render('tips/404') : _self.render('tips/error');}})}this.skip = function (path) {location.hash = '#/${path}'}this.render = function (u) {location.hash = _self.correctRouter(u);}this.correctRouter = function (e) {return /^\//.test(e) || (e = "/" + e),e.replace(/^(\/+)/, "/").replace(new RegExp("/" + setter.entry + "$"), "/");}};// const hashRoute = new HashRoute()// hashRoute.init();

参考

// 该写法为了满足多条件下的 CommonJs,Node.js, window,layui(function (name, factory) {// 检测上下文是否为AMD或者CMDvar hasDefine = typeof define === "function",// 检查上下文环境是否为NodehasExports = typeof module !== 'undefined' && module.exports,hasLayui = this.layui && layui.define;if (hasDefine) {// AMD 环境或者 CMD环境define(factory);} else if (hasExports) {// 定义为普通的Node模块module.exports = factory();} else if (hasLayui) {layui.define(['jquery', 'ajaxModel', 'setter'], function (exports) {exports('view', factory());});} else {// window对象this[name] = factory();}
})('view', function () {"use strict";var $ = layui.jquery,setter = layui.setter,ajaxModel = layui.ajaxModel;var _self = null;var View = function View(params) {_self = this;};View.prototype.init = function () {window.addEventListener('DOMContentLoaded', function () {console.log('DOMContentLoaded');})$(document).ready(_self.setRoute);// 1.直接更改浏览器地址,在最后面增加或改变#hash; // 2.通过改变location.href 或 location.hash的值; // 3.通过触发点击带锚点的链接; // 4.浏览器前进后退可能导致hash的变化,前提是两个网页地址中的hash值不同window.addEventListener('hashchange', _self.setRoute)}View.prototype.setRoute = function () {var route = layui.router();// layer.msg('只想弱弱提示<br>' + location.href);// console.log(route.href);if (route.href != undefined) {route.href = route.href.substr(route.href.length - 1, 1) == '/' ? route.href + setter.entry : route.href;}ajaxModel.ajaxMethod({url: setter.views + (route.href ? route.href : setter.entry) + setter.engine,dataType: 'html',successfn: function (e) {$('.layadmin-tabsbody-item.layui-show').html(e);},errorfn: function (e) {// e.status === 404 ? _self.render('tips/404') : _self.render('tips/error');}})}View.prototype.skip = function (path) {location.hash = '#/${path}'}View.prototype.render = function (u) {location.hash = _self.correctRouter(u);}View.prototype.correctRouter = function (e) {return /^\//.test(e) || (e = "/" + e),e.replace(/^(\/+)/, "/").replace(new RegExp("/" + setter.entry + "$"), "/");}return new View(); // 返回构造});

转载于:https://www.cnblogs.com/snmic/p/10400421.html

ajax hash调用实例相关推荐

  1. php页面get方法实现ajax,入门实例教程

    ajax,入门实例教程 本例针对php页面,做了一个小的demo加深对ajax的理解 1.文档结构: 共有ajax.php 和action.php 2个页面. 2.源码如下: /*ajax.php页面 ...

  2. html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法

    本文实例讲述了JSP+jQuery使用Ajax方式调用JSON的实现方法,在这里分享给大家以供大家参考,具体的实现以及代码如下所示: 前台: //test function test(uid) { i ...

  3. axis2 webservice入门学识(JS,Java,PHP调用实例源码)

    来源:http://www.myexception.cn/web/952419.html axis2 webservice入门知识(JS,Java,PHP调用实例源码) 背景简介 最近接触到一个银行接 ...

  4. jsp jquery ajax请求,JSP+jquery使用ajax方式调用json的实现方法

    本文实例讲述了JSP+jquery使用ajax方式调用json的实现方法.分享给大家供大家参考,具体如下: //test function test(uid) { if(confirm("确 ...

  5. ajax远程调用,jquery中的ajax方法怎样通过JSONP进行远程调用

    关于JSONP的概念和为什么要使用JSONP网上已经有很多教程,这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用 首先介绍下$.ajax的参数 type:请求方式 GET/ ...

  6. 原始ajax方式调用asp.net后台方法

    aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Data.asp ...

  7. Ajax异步调用Web服务的例子

    我这里是看的Dflying Chen的使用ASP.NET AJAX异步调用Web Service和页面中的类方法的一系列文章写出来的例子. 请Dflying Chen别介意.例子中没有最后一篇文章的的 ...

  8. python中selenium中使用ajax_selenium 智能等待ajax完成调用

    selenium 智能等待ajax完成调用 使用webdriverwater 传入一个lambda表达式 判断 ajax调用转台 当 jquery.active==0 表示ajax调用完成 仅在jqu ...

  9. ajax 请求调用问题

    http://localhost/dev/list 和  http://127.0.0.1/dev/list 最近在架构整体常规通用系统的解决方案,遭遇AJAX请求不执行的问题,刚开始以为Spring ...

最新文章

  1. php 开启mysql_php如何开启mysqli扩展
  2. 给转型做技术的同学的一些建议
  3. C语言实现循环链表Circularly Linked List(附完整源码)
  4. Python代码列主元消去法matlab编程_工业机器人用什么语言编程的?
  5. ensp静态路由的配置及分析
  6. C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
  7. Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
  8. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
  9. php object 对象不存在。增加对象_《相亲者女》:找一个匹配的对象,但永远不存在...
  10. 基于php的购物网站源代码,[内附完整源码和文档] 基于PHP的网上购物系统设计与实现...
  11. JavaScript知识整理(一)——W3school
  12. javax.validation.ValidationException: HV000028: Unexpected exception during isValid call.出错怎么办
  13. 【清华大学陈渝】第四章_物理内存管理
  14. Scheme 语言概要(上)
  15. Linux 实用指令 -- 网络配置(查看网络IP和网关、 ping 测试主机之间网络连通、Linux网络环境配置(指定固定ip))
  16. Mac M1 安装Maven
  17. 《孙子兵法作战指挥之虚实篇》
  18. 苹果市场占有率_苹果耳机销售速度超手机,占据TWS耳机半壁江山
  19. 海南:2021年4月前将基本实现全岛5G场景全覆盖
  20. 676_AUTOSAR_TR_Methodology_文档阅读3

热门文章

  1. oralce 表空间解锁
  2. qq邮箱电脑版登录入口_青骄第二课堂学生平台登录入口,青骄第二课堂登录入口(官网手机版入口:https://m.2class.com/)...
  3. Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)
  4. SharePoint 2013 - Callout
  5. linux 进程相关
  6. (转)HIBERNATE与 MYBATIS的对比
  7. DOS BAT用法简例子
  8. 如果知道一个控件类型的对话框句柄是编辑框控件
  9. VC Studio 使用技巧大全(转)
  10. DeeoID:Deep learning face representation from predicting 10,000 classes