使用php后台给自己做一个页面路由,配合ajax实现局部刷新。
今天就要放假了,把近来囤积的小玩意儿总结整理一下。
在请求一个html页面来嵌入到当前页会有一个问题,就是跟随请求过来的html他的样式表和脚本会失效。是因为文档加载的先后顺序等问题造成的。因此,加载一些纯文本还好。
举个例子,只有这个问题明白了,我们的原理才好理解。
b.html有一个点击事件,但是a.html通过ajax拿到b.html后,如果这个b.html的js不是写在页面里面的,你就会发现没有生效。css样式也一样,都需要重新绑定一下。
首先定义两个页面,一个父页面a.html,一个b.html
a页面我给它一个请求按钮
<button>我要一个页面,php快给我。</button>
给他一个容器
<div class="cont"></div>
b页面不要有head和body
<p id="p">我是被拿到一个页面,我的内容是加油!</p>
b页面的js一定是一个单独的文件,如果css的话,我就只给了一个js脚本。
$('#p').css('background','red').on('click',function () {
alert('asdasd');
});
先来看我的后台php控制,其实这里也可以不用php,直接拿地址也行,不过感觉不够高级,写在php里,是不会有‘痕迹’的。
$content =file_get_contents('pegr/a.html');//我将a页面和a.js都放在分页文件夹下了
$script=file_get_contents('pegr/a.js');
echo $content,$script;
然后是我们的js里的ajax请求
$('button').on('click',function () {
$.ajax({
url:'getData.php',
type:'POST',
async:true, //是异步加载
success:function(data){
console.log(data); //如果你不清楚下面为什么查找‘$’,看看输出的data就明白了
for (var i = -1, arr = []; (i = data.indexOf("$", i + 1)) > -1; arr.push(i));
//alert(arr);
var scripts =$('<script>'+data.substring(arr)+'<\/script>');
$('.cont').html(data.substring(0,arr));
// alert(data.substring(arr)) 分理出js脚步
$('body').append(scripts);
},
error:function(xhr){
console.log('错误');
console.log(xhr);
}
})
})
祝大家新年快乐。我今天下午也就可以回家了吧,想想还有些激动呢。
使用php后台给自己做一个页面路由,配合ajax实现局部刷新。的更多相关文章
- 利用@keyframe及animation做一个页面Loading时的小动画
前言 利用@keyframe规则和animation常用属性做一个页面Loading时的小动画. 1 @keyframe规则简介 @keyframes定义关键帧,即动画每一帧执行什么. 要使用关键帧 ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 通过js根据后台数据动态生成一个页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ExportSelField ...
- 点击登录页面成功后,后端返回数据需要保存,在另外一个页面,发送ajax请求的时候需要登录返回数据的其中的一部分当做参数然后拿到新的数据
对于这个怎么操作首先我们要在登录的ajax请求中把后端的数据保存到sessionstorage中,代码如下 登录ajax $.ajax({ type:'post', url:xxxxxxxxx, da ...
- app进入后台之后接收到通知,点进去进入新的页面,再次进入后台,再点击通知进入页面(,两次通过通知进入的页面,创建了两次,会多一个页面,)解决办法监听
在点击通知进入的页面的 //UIApplicationWillResignActiveNotification是app即将进入后台的方法 //增加监听使它在进入后台之前pop上一个页面 - (void ...
- 通过用jQuery写一个页面,我学到了什么
概述 前几天面试,hr发来一个测试文件,让我做做看.我一看,其实就是根据PSD需求写一个页面,再加上一些互动效果即可. 刚好我之前学了切图,jquery等知识还没练手过,于是高兴的答应了. 最后花了3 ...
- jQuery 向另一个页面传参,同时跳转到该页面
为了使参数能够传递到另外一个页面,使用ajax的跳转方式 $.ajax({ type: "POST", url:"/admin/sysjgl/sysjck/sjcs&qu ...
随机推荐
- noip模拟赛 helloworld
分析:对于第一个点,答案为26^n - 25^n,这个很好想.另外30%的点因为n <= 5,所以可以直接暴力搜索. 数学方法不是很好处理,考虑dp,设f[i][j]为前i位匹配到危险串第j位的 ...
- LoaderManager与CursorLoader用法
一.基本概念 1.LoaderManager LoaderManager用来负责管理与Activity或者Fragment联系起来的一个或多个Loaders对象. 每个Activity或者Fragme ...
- 【题解】Crash的数字表格 BZOJ 2154 莫比乌斯反演
题目传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=2154 人生中第一道自己做出来的莫比乌斯反演 人生中第一篇用LaTeX写数学公式的博客 大 ...
- java RSA加密解密实现(含分段加密)
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detail/centralperk/50255 ...
- 转:Java中的equals和hashCode方法详解
转自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这 ...
- Matlab 工具箱介绍
Toolbox工具箱 序号 工具箱 备注 数学.统计与优化 1 Symbolic Math Toolbox 符号数学工具箱 2 Partial Differential Euqation Toolbo ...
- 如何生成Java Key以及sign一个jar
1. 生成Java Key: keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize mydomain ...
- 【C++ STL】Stack
1.定义 class stack<> 实作出一个stack(也成为LIFO,后进先出),你可以使用push()将任意数量的元素置入stack中,也可以使用pop()将元素依次插入次序反序从 ...
- Linux之防火墙与端口
1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放.下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptable ...
- 修改Maven仓库地址
在%USERPROFILE%\.m2\settings.xml例如:C:\Users\LongShu\.m2\settings.xml 可以自定义Maven的一些参数, 复制%M2_HOME%\con ...