框架越来越不火了,HTML5就不对框架支持了,iframe也只有url了,Div就担当了此大任。由于之前技术不成熟的时候系统采用的框架是framset框架,侧边栏显示在左边,主页面显示在main位置。但是现在不是很忙了,寻思着改变一下系统的架构,随便也熟悉下ajax的局部刷新。
引用ajax
可以在网上搜索下载ajax.js文件,我们主要用到的是文件里的AJAXRequest这个类,还有其他的一些方法。下载地址 引入ajax包后,引用jquery,然后在页面中给定一个div,如<div id="leftmenu"></div>,然后想要进入页面的时候就执行效果,代码如下:
var ajaxobj=new AJAXRequest; // 创建AJAX对象,类在刚刚那个文件里了
ajaxobj.method="GET"; // 设置请求方式为GET
ajaxobj.url="wind/left.jsp" // 响应的URL
ajaxobj.callback=function(xmlobj) {
document.getElementById('leftmenu').innerHTML = xmlobj.responseText;
}
ajaxobj.send(); //发送请求
但是有一个问题,就是我的显示的时候不是在制定的div里,而是整个页面都被渲染了。
jquery的方式
jquery中也有可以在本页面引入其他页面的方法。
$(document).ready(function (){
$("#leftmenu").load("./wind/left.jsp",function(){ $("#leftmenu").fadeIn(100);});
});
使用jquery的load()函数就可以把页面引用出来,可以在指定的地方显示,但是我的实际项目中,引用的left.jsp页面的下拉效果没有了,而且一直报cdn的问题
GET http://cdn.bootcss.com/bootstrap/3.3.6/js/lay/modules/layer.js 503 (Service Temporarily Unavailable)t.fn.use @ VM178:2(anonymous function) @ VM179:2(anonymous function) @ jquery.min.js:2n.extend.globalEval @ jquery.min.js:2n.fn.extend.domManip @ jquery.min.js:3n.fn.extend.append @ jquery.min.js:3(anonymous function) @ jquery.min.js:3n.access @ jquery.min.js:3n.fn.extend.html @ jquery.min.js:3(anonymous function) @ jquery.min.js:4n.Callbacks.j @ jquery.min.js:2n.Callbacks.k.fireWith @ jquery.min.js:2x @ jquery.min.js:4n.ajaxTransport.a.send.b @ jquery.min.js:4
VM178:2 GET http://cdn.bootcss.com/bootstrap/3.3.6/js/lay/modules/element.js 503 (Service Temporarily Unavailable)
直接引用
然后我想,如果是直接引用可不可以呢?之前引用top.jsp页面就是使用的
但是有一个问题就是我的下拉选择后的效果没有了,不能保留原来的动作,所以还是要用到局部刷新。
总结
通过测试这几个方法,暂时了解到这么多,对ajax的学习还需要深入,可能有些情况和问题是我没有考虑到才会出现这样那样的问题,总之,加紧学习吧。