$('[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. Idea terminal:不是内部或外部命令,也不是可行的程序或批处理文件
  2. debian 安装_如何在 Debian/Ubuntu 上手动安装安全更新? | Linux 中国
  3. Backpropagation Through Time:What it Does and How to Do it论文解读
  4. 【华为云网络技术分享】HTTP重定向HTTPS配置指南
  5. html asp:textbox,ASP .NET - TextBox 控件
  6. DeepMatch交友机器人:原来姹紫嫣红开遍,缘来就是你
  7. WINCE下ActiveSync连接故障修复办法
  8. 论文阅读_基于知识图谱的约束性问答
  9. 一文详解云原生DevOps(认识、熟悉、上手,DevOps,Docker,Jenkins,SonarQube,Harbor)
  10. SDH通信网络时钟同步服务(NTP/PTP精密网络时钟源)精度分析
  11. android 百度导航 过路费,高德地图和百度地图规划路线不一样,且过路费也有差别如何选择?...
  12. 机器学习集成学习与模型融合
  13. SpringCloud的五大神兽的详细配置
  14. iPad越狱搭建java环境_win7+virtualbox安装Mac os搭建完美越狱环境
  15. MySQL命令rename:修改表名
  16. 计算机组原理ppt,计算机组原理1.ppt
  17. OSChina 周四乱弹 ——阿法狗战胜了李世石
  18. 【2023新书】《ChatGPT在做什么…以及它为什么好使》
  19. laravel身份证验证_简单的Laravel登录身份验证
  20. 虚电路和数据报网络——网络层

热门文章

  1. Android系统Recovery工作原理之使用update.zip升级过程分析(五)
  2. shareSDK(分享第三方库)的 使用
  3. Hadoop运维记录系列(三)
  4. 专家提醒:计算机专业毕业生求职三要点!
  5. 看了两篇园子里的文章,初步懂了点接口的涵义
  6. java 列表组件_Jsp页面列表组件框架设计
  7. Set the roller speed
  8. 代码审计-四叶草杯线下awd比赛源码web2
  9. shell 编程整合
  10. 用Excel制作改进前后漏斗模型图比较