ajax一站到底

打算写一个网站后台,操作挺复杂的。准备全站都用ajax请求数据。但是全局变量怎么弄呢。
比如:
页面左侧栏为菜单,右侧是工作区域
单击左侧新增,请求页面,然后渲染在右侧工作区域,请求右侧要用的js文件。有一个插件jqueryValidate.js,在全局的$上新增了$.fn.validate方法。然后点击编辑又ajax请求编辑页面,这个时候来了jquery.editor.js,又在$.fn.editor方法,这样下去全局变量会越来越多的,并且全局环境一直不清空,而用户一直操作,总感觉不是很放心,求解答。

阅读 3.7k
5 个回答

1.用闭包 你在使用插件的时候 用闭包 包起来把他变成 局部变量。调用返回就仅限于这个块。使用了之后也无所谓 反正全局是请求不到的。下次 继续使用闭包在一个块里面继续操作就行了。

2.或者直接封装在函数里面 当一个局部变量 来调用也可以避免这种情况。

看看这样能不能解决你的疑惑。

既然全部用ajax请求数据,就是要做SPA页面了?为什么不用MVVM框架来解决这种问题呢。
用jQuery来做这种需求的页面,到后期的结果就是无法维护。
全局变量的问题。了解下前端模块化就行了。
感觉题主对前端并不熟悉,如果是公司项目的话,建议不要这样做,用其他自己熟悉的技术来解决问题。

1)jQuery是一次加载完毕,即使按你的描述,不同的请求加载不用js文件,记载的js执行也是一次性的,不会每次都操作全局变量的,在全局变量中增加的时函数库
2)具体的业务逻辑封装一个模块中-一个函数对象中,函数执行完毕后,函数栈会清除,并且JS引擎会做必要的垃圾回收

之前和一位阿里的同事一起做过通过锚点Ajax请求不同后端地址的后台,锚点的每次变化会出发一个全局事件;晚上回去找下再继续补充答案

<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8 />
    <title>test</title>
</head>
<body>
<a href="#test1_abc">跳锚点1</a>
<a href="#test2_abc">跳锚点2</a>
<a href="#test3_abc">跳锚点3</a>
<a href="#test4_abc">跳锚点4</a>

<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script>
window.onhashchange = function(){
    var url = window.location.hash.replace('#', '').replace('_', '/');
    $.post(url, {}, function(){
        console.log('ok');
    });
}
</script>
</body>
</html>

用前端框架,比如:angularjs、vuejs⋯⋯

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题