`

ajax 一次请求

 
阅读更多
在网站开发中经常会用到ajax,从执行效率上应该注意一些问题。例如:

 

 

 

 

原始是每次切换一次选项都会发起请求,这样会降低效率,我们可以将请求后的数据保存下来,然后下次根据请求地址直接获得请求内容,这样同url每次只需请求一次。

 

为此专门写一个JQ插件来做这件事就很有必要。插件具体内容:

 

 

[html] view plaincopy
 
  1. (function($){  
  2.     //存放請求過的地址  
  3.     var _request_list = Array();  
  4.     jQuery.ajaxOnce = function(options){  
  5.         //與jquery ajax參數保持一致  
  6.         var settings = {  
  7.             type: "POST",  
  8.             url: "",  
  9.             data: "",  
  10.             cache: true,  
  11.             async: true,  
  12.             success: ""  
  13.         }  
  14.         if(options){  
  15.             jQuery.extend(settings,options);  
  16.         }  
  17.         //回調  
  18.         var _successfun = settings.success;  
  19.         //驗證是否已請求  
  20.         var _msg = validReq(settings.url);  
  21.         if(_msg){  
  22.             if(typeof _successfun == "function"){  
  23.                 _successfun(_msg);  
  24.             }  
  25.         }else{  
  26.             //執行ajax請求  
  27.             jQuery.ajax({  
  28.                 type: settings.type,  
  29.                 url: settings.url,  
  30.                 data: settings.data,  
  31.                 cache: settings.cache,  
  32.                 async: settings.async,  
  33.                 success: function(msg){  
  34.                     addContent(settings.url,msg);  
  35.                     if(typeof _successfun == "function"){  
  36.                         _successfun(msg);  
  37.                     }  
  38.                 }  
  39.             })  
  40.         }  
  41.           
  42.         //檢查請求是否存在  
  43.         function validReq($parm_url){  
  44.             for($_i = 0;$_i < _request_list.length; $_i++){  
  45.                 if(_request_list[$_i]['url'] == $parm_url){  
  46.                     return _request_list[$_i]['content'];  
  47.                 }  
  48.             }  
  49.             return false;  
  50.         }  
  51.           
  52.         //添加指定url內容  
  53.         function addContent($parm_url,$param_content){  
  54.             _combin = Array();  
  55.             _combin['url'] = $parm_url;  
  56.             _combin['content'] = $param_content;  
  57.             _request_list.push(_combin);  
  58.         }  
  59.     }  
  60. })(jQuery)  

 

 

 

我只是将JQ自带的AJAX函数封装了下,具体调用和原来调用AJAX是一样的,只不过调用方式由jQuery.ajax换成了jQuery.ajaxOnce。

 

后续:

如果需要将数据长时间保存,可以利用本地存储将数据保存至本地,网上开源程序APC.js专门用来处理这种需求,并合理地利用不同浏览器的特性,详细内容:http://vquickphp.com/?a=blogview&id=33

 
分享到:
评论

相关推荐

    按钮的Ajax请求时一次点击两次提交的解决方法

    在使用JavaScript的Ajax请求时,如果在Ajax请求完成后没有阻止按钮的默认行为,即表单提交,就会发生“一次点击两次提交”的情况。下面详细探讨两种常用的解决办法。 ### 解决方案一:更改按钮的type属性 第一种...

    解决js ajax同步请求造成浏览器假死的问题

    具体到本文中,开发者在第二次尝试中使用了setTimeout,将AJAX请求放入setTimeout所创建的函数中。这样做允许浏览器在执行AJAX请求之前先执行页面上其他未被阻塞的JavaScript代码和渲染操作。通过这种方式,页面的UI...

    解决Ajax 发送多个请求引发的并发问题

    这里提供一个使用jQuery的Ajax请求队列示例: ```javascript var requestQueue = []; function sendAjaxRequest(url, callback) { if (requestQueue.length === 0) { $.ajax({ url: url, success: function...

    为jquery的ajax请求添加超时timeout时间的操作方法

    // 第一次等待10秒后进行轮询 checkLoading(10000); ``` 在上述代码中,我们首先使用setTimeout函数实现延时调用,这样可以在发起请求之前等待一段预设的时间。如果checkLoading函数在没有设置延时参数的情况下被...

    js定时器+ajax,间隔10s调用一次

    主要用于消息提醒,利用js页面定时器,定时提交ajax请求,查询最新的消息记录。改了很多次,终于成功了。

    ajax请求一次却执行两次.zip

    然而,有时开发者可能会遇到一个问题:明明发送了一个Ajax请求,但在浏览器的开发者工具(如Chrome的F12)中却发现该请求被执行了两次。这种现象可能会导致数据处理错误,增加服务器负载,甚至影响用户体验。本文将...

    Ajax Get、Post请求

    4. **幂等性**:GET请求是幂等的,多次请求结果相同;POST请求不是,多次提交可能会产生不同的效果。 5. **可缓存**:GET请求可被浏览器缓存,POST请求通常不被缓存。 6. **可收藏为书签**:GET请求可被收藏为书签,...

    ajax请求后台数据实现分页功能

    在网页开发中,分页是一种常见的用户界面设计,它允许用户逐步浏览大量数据,而无需一次性加载所有内容,从而提高页面加载速度并优化用户体验。AJAX(Asynchronous JavaScript and XML)技术是实现这一功能的关键,...

    多个ajax同时进行

    然而,最初的Ajax设计并不支持并发请求,即一次只能发送一个请求。随着技术的发展,现代浏览器已经允许同时发送多个Ajax请求。 二、并发请求 1. **并行请求**:在现代浏览器中,一个浏览器实例可以同时处理多个Ajax...

    php开发之ajax异步请求

    // 每5秒刷新一次 ``` 五、自动验证 在用户输入时,可以用Ajax即时验证用户输入的有效性,如邮箱格式、用户名是否存在等。以下是一个简单的邮箱格式验证示例: ```javascript document.getElementById('email...

    js每隔5分钟执行一次ajax请求的实现方法

    标题中提到的知识点是如何每隔5分钟执行一次AJAX请求,这是一个在前端JavaScript开发中常见的需求,主要用于实现定时更新服务器数据、定时轮询等。在JavaScript中,实现周期性任务通常有几种方法,这里主要涉及到的...

    ajax异步请求数据分页

    标题中的“ajax异步请求数据分页”是指使用AJAX技术在后台动态获取所需的数据部分,而不是一次性加载整个数据集。这样可以提高网页的响应速度和用户的交互体验。AJAX的核心是XMLHttpRequest对象,它允许我们在不刷新...

    表格制作软件中实现ajax跨域异步单点登录的方法

    单点登录是指用户只需要进行一次身份认证,便可以访问多个应用系统,无需重复登录。这种方式大幅提升了用户体验,并且在安全性方面也有所增强。但在企业部署中,OA系统与报表系统往往部署在不同的服务器上,这就涉及...

    jQuery实现ajax的嵌套请求案例分析

    //发送一个ajax请求,嵌套的ajax请求 'ajaxCall': function(url1, data1, url2, data2){ var returnValue = ''; $.ajax({ type: "POST", url: url1, async: false, data: data1, success: function(data3) {

    ajax POST 与GET提交的区别

    - **GET**: 浏览器通常会缓存GET请求的结果,因此在多次请求相同URL时可能会直接从缓存中读取结果,而不是再次发送请求到服务器。 - **POST**: 不会被缓存,每一次POST请求都会被视为新的请求。 5. **幂等性**: ...

    使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例

    在当今的Web开发中,分页功能是必不可少的一部分,尤其是在处理大量数据的时候,合理地组织页面,可以提升用户体验,减少一次性加载数据的负担。本文介绍的是一种结合了Bootstrap框架和bootstrap-paginator.js插件的...

    ajax评论程序+ASP+ACCESS

    动态分页是一种优化大量数据展示的方法,它允许用户逐页浏览评论,而不是一次性加载所有评论,减轻了服务器负担并提高了页面加载速度。 ACCESS是微软的桌面数据库管理系统,常用于小型应用程序的数据存储。在这个...

    ajax嵌套解决方式

    1. **节省资源**:只使用一次AJAX请求获取所有必要的数据,减少了网络请求次数。 2. **易于理解**:代码逻辑简单直观,容易理解和维护。 **缺点**: 1. **灵活性差**:这种方法只适用于向同一服务器发送请求的情况...

Global site tag (gtag.js) - Google Analytics