在网站开发中经常会用到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
相关推荐
在使用JavaScript的Ajax请求时,如果在Ajax请求完成后没有阻止按钮的默认行为,即表单提交,就会发生“一次点击两次提交”的情况。下面详细探讨两种常用的解决办法。 ### 解决方案一:更改按钮的type属性 第一种...
具体到本文中,开发者在第二次尝试中使用了setTimeout,将AJAX请求放入setTimeout所创建的函数中。这样做允许浏览器在执行AJAX请求之前先执行页面上其他未被阻塞的JavaScript代码和渲染操作。通过这种方式,页面的UI...
这里提供一个使用jQuery的Ajax请求队列示例: ```javascript var requestQueue = []; function sendAjaxRequest(url, callback) { if (requestQueue.length === 0) { $.ajax({ url: url, success: function...
// 第一次等待10秒后进行轮询 checkLoading(10000); ``` 在上述代码中,我们首先使用setTimeout函数实现延时调用,这样可以在发起请求之前等待一段预设的时间。如果checkLoading函数在没有设置延时参数的情况下被...
主要用于消息提醒,利用js页面定时器,定时提交ajax请求,查询最新的消息记录。改了很多次,终于成功了。
然而,有时开发者可能会遇到一个问题:明明发送了一个Ajax请求,但在浏览器的开发者工具(如Chrome的F12)中却发现该请求被执行了两次。这种现象可能会导致数据处理错误,增加服务器负载,甚至影响用户体验。本文将...
4. **幂等性**:GET请求是幂等的,多次请求结果相同;POST请求不是,多次提交可能会产生不同的效果。 5. **可缓存**:GET请求可被浏览器缓存,POST请求通常不被缓存。 6. **可收藏为书签**:GET请求可被收藏为书签,...
在网页开发中,分页是一种常见的用户界面设计,它允许用户逐步浏览大量数据,而无需一次性加载所有内容,从而提高页面加载速度并优化用户体验。AJAX(Asynchronous JavaScript and XML)技术是实现这一功能的关键,...
然而,最初的Ajax设计并不支持并发请求,即一次只能发送一个请求。随着技术的发展,现代浏览器已经允许同时发送多个Ajax请求。 二、并发请求 1. **并行请求**:在现代浏览器中,一个浏览器实例可以同时处理多个Ajax...
// 每5秒刷新一次 ``` 五、自动验证 在用户输入时,可以用Ajax即时验证用户输入的有效性,如邮箱格式、用户名是否存在等。以下是一个简单的邮箱格式验证示例: ```javascript document.getElementById('email...
标题中提到的知识点是如何每隔5分钟执行一次AJAX请求,这是一个在前端JavaScript开发中常见的需求,主要用于实现定时更新服务器数据、定时轮询等。在JavaScript中,实现周期性任务通常有几种方法,这里主要涉及到的...
标题中的“ajax异步请求数据分页”是指使用AJAX技术在后台动态获取所需的数据部分,而不是一次性加载整个数据集。这样可以提高网页的响应速度和用户的交互体验。AJAX的核心是XMLHttpRequest对象,它允许我们在不刷新...
单点登录是指用户只需要进行一次身份认证,便可以访问多个应用系统,无需重复登录。这种方式大幅提升了用户体验,并且在安全性方面也有所增强。但在企业部署中,OA系统与报表系统往往部署在不同的服务器上,这就涉及...
//发送一个ajax请求,嵌套的ajax请求 'ajaxCall': function(url1, data1, url2, data2){ var returnValue = ''; $.ajax({ type: "POST", url: url1, async: false, data: data1, success: function(data3) {
- **GET**: 浏览器通常会缓存GET请求的结果,因此在多次请求相同URL时可能会直接从缓存中读取结果,而不是再次发送请求到服务器。 - **POST**: 不会被缓存,每一次POST请求都会被视为新的请求。 5. **幂等性**: ...
在当今的Web开发中,分页功能是必不可少的一部分,尤其是在处理大量数据的时候,合理地组织页面,可以提升用户体验,减少一次性加载数据的负担。本文介绍的是一种结合了Bootstrap框架和bootstrap-paginator.js插件的...
动态分页是一种优化大量数据展示的方法,它允许用户逐页浏览评论,而不是一次性加载所有评论,减轻了服务器负担并提高了页面加载速度。 ACCESS是微软的桌面数据库管理系统,常用于小型应用程序的数据存储。在这个...
1. **节省资源**:只使用一次AJAX请求获取所有必要的数据,减少了网络请求次数。 2. **易于理解**:代码逻辑简单直观,容易理解和维护。 **缺点**: 1. **灵活性差**:这种方法只适用于向同一服务器发送请求的情况...