ajax学习

框架越来越不火了,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页面就是使用的,然后我试着用,稍微调整下left.jsp的布局和home.jsp的布局后就好了。

但是有一个问题就是我的下拉选择后的效果没有了,不能保留原来的动作,所以还是要用到局部刷新。

总结

通过测试这几个方法,暂时了解到这么多,对ajax的学习还需要深入,可能有些情况和问题是我没有考虑到才会出现这样那样的问题,总之,加紧学习吧。