在网站开发中经常会用到ajax,从执行效率上应该注意一些问题。例如:
原始是每次切换一次选项都会发起请求,这样会降低效率,我们可以将请求后的数据保存下来,然后下次根据请求地址直接获得请求内容,这样同url每次只需请求一次。
为此专门写一个JQ插件来做这件事就很有必要。插件具体内容:
- (function($){
- //存放請求過的地址
- var _request_list = Array();
- jQuery.ajaxOnce = function(options){
- //與jquery ajax參數保持一致
- var settings = {
- type: "POST",
- url: "",
- data: "",
- cache: true,
- async: true,
- success: ""
- }
- if(options){
- jQuery.extend(settings,options);
- }
- //回調
- var _successfun = settings.success;
- //驗證是否已請求
- var _msg = validReq(settings.url);
- if(_msg){
- if(typeof _successfun == "function"){
- _successfun(_msg);
- }
- }else{
- //執行ajax請求
- jQuery.ajax({
- type: settings.type,
- url: settings.url,
- data: settings.data,
- cache: settings.cache,
- async: settings.async,
- success: function(msg){
- addContent(settings.url,msg);
- if(typeof _successfun == "function"){
- _successfun(msg);
- }
- }
- })
- }
- //檢查請求是否存在
- function validReq($parm_url){
- for($_i = 0;$_i < _request_list.length; $_i++){
- if(_request_list[$_i]['url'] == $parm_url){
- return _request_list[$_i]['content'];
- }
- }
- return false;
- }
- //添加指定url內容
- function addContent($parm_url,$param_content){
- _combin = Array();
- _combin['url'] = $parm_url;
- _combin['content'] = $param_content;
- _request_list.push(_combin);
- }
- }
- })(jQuery)
我只是将JQ自带的AJAX函数封装了下,具体调用和原来调用AJAX是一样的,只不过调用方式由jQuery.ajax换成了jQuery.ajaxOnce。
后续:
如果需要将数据长时间保存,可以利用本地存储将数据保存至本地,网上开源程序APC.js专门用来处理这种需求,并合理地利用不同浏览器的特性,详细内容:http://vquickphp.com/?a=blogview&id=33
相关推荐
像ajax请求发生两次提交的原因是在执行完ajax请求后,并没有阻止submit的行为,下面小编给大家带来两种按钮的ajax请求时一次点击两次提交的解决方法,一起看看吧
ajax请求一次却执行两次.zip 能看到这里的同行们肯定是遇到了chrome f12发现访问一次ajax,得到了两次返回.我来告诉你原理和如何让后台只返回一次的方法
主要用于消息提醒,利用js页面定时器,定时提交ajax请求,查询最新的消息记录。改了很多次,终于成功了。
Ajax与跨站点请求伪造漏洞,近日,我们的网站请微软的工程师作了一次漏洞扫描,扫描结果中有两个“跨站点请求伪造漏洞”。通过查资料,我做了一番研究,包括此漏洞的入侵条件,被攻击后的损失以及防范措施等。
每隔5分钟执行一次ajax请求,如何实现?下面有个不错的示例,感兴趣的朋友可以参考下
//发送一个ajax请求,嵌套的ajax请求 'ajaxCall': function(url1, data1, url2, data2){ var returnValue = ''; $.ajax({ type: "POST", url: url1, async: false, data: data1, success: function(data3) {
jquery的ajax在频繁请求数据,或者重复请求数据的时候出现了一个情况,那就是非ie浏览器正常,ie浏览器会设置缓存,导致第二次请求的时候不会刷新,系统报304 not modify, 解决方案: jquery的ajax方法提供配置...
简单的把Ajax请求封装了一下 目前只考虑了请求文本的情况。 超时处理。 某一时刻只能处理一次请求。
HTTP中的 GET 和 POST的时候就不执行下面的代码,这样就可以只执行一次请求了。 在ASP.NET中我们用 Request.ServerVariables[REQUEST_METHOD] == POST 或者 Request.ServerVariables[REQUEST_METHOD] == GET 就...
此时使用 new 模式保证使用最后一次请求 auto模式,根据url和请求参数判断使用 old 还是 new模式 使用方法: 扩展了$.ajax,增加了参数 $.ajax({ name: '请求标识', // 标识相同表示是一个single,则会根据rule...
我们在用ajax请求数据时,可能会遇到一次点击多次触发的可能。 (比如说:ajax 的 onreadystatechange 事件就会触发多次;这是因为 onreadystatechange 是一个事件句柄。 它的值 (state_Change) 是一个函数的名称,...
1.在原有的基础上进行二次修改,通过ajax请求,获取json数组,迭代json数组生成多层级的数据字典。当前例子中数据源为 模拟的json数据。当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前...
Jquery 一次处理多个ajax请求的代码,需要的朋友可以参考下。
先看下面一段代码: DiGui = function (param) { $.ajax({ success: function ...解决思路: 保证setInterval对象只创建一次 实现方案: 定一个布尔变量进行判断 var status= true; var status = true; DiGui = fu
ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取 get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为...
一种服务,用于限制一次触发的 AJAX 请求的数量,以免阻止浏览器发出其他请求。 这是一项服务,允许您限制您发出的 AJAX 请求的数量,以便不阻止浏览器发出其他请求(例如,使用 angular-router 阻止导航)。 它是...
•多个ajax请求同时发送,相互无依赖。...例如: 用户登录后我们发送一次请求得到用户的应用ID,然后利用应用ID发送一次请求得到具体的应用内容(例子虽然不是太恰当,但基本就是这个意思了)。 处