`
流浪鱼
  • 浏览: 1692670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery ajax queue

 
阅读更多
// 第一个ajax请求
$(document).queue("ajaxRequests", function(){
    //全局变量,储存第一个ajax请求数据
    var a_data;
    $.ajax({
        success: function(data){
            a_data = data;
            $(document).dequeue("myName");
        }
    });
});
// 第二个ajax请求
$(document).queue("ajaxRequests", function() {
  $.ajax({
    success: function(data) {
      alert(a_data);
      $(document).dequeue("myName");
    }
  });
});
// 触发queue往下执行
$(document).dequeue("ajaxRequests")
 
=================================
(function ($) {
var jqXhr = {},
ajaxRequest = {};
$.ajaxQueue = function (settings) {
var options = $.extend({ className: 'DEFEARTNAME' }, $.ajaxSettings, settings);
var _complete = options.complete;
$.extend(options, {
complete: function () {
if (_complete)
_complete.apply(this, arguments);
if ($(document).queue(options.className).length > 0) {
$(document).dequeue(options.className);
} else {
ajaxRequest[options.className] = false;
}
}
});
$(document).queue(options.className, function () {
$.ajax(options);
});
if ($(document).queue(options.className).length == 1 && !ajaxRequest[options.className]) {
ajaxRequest[options.className] = true;
$(document).dequeue(options.className);
}
};
$.ajaxSingle = function (settings) {
var options = $.extend({ className: 'DEFEARTNAME' }, $.ajaxSettings, settings);
if (jqXhr[options.className]) {
jqXhr[options.className].abort();
}
jqXhr[options.className] = $.ajax(options);
};
})(jQuery);
var ajaxSleep = (function () {
var _settings = {
type: 'GET',
cache: false,
success: function (msg) {
var thtml = $('#txtContainer').html();
$('#txtContainer').html(thtml + "<br />" + msg);
}
};
return {
get: function (seconds, mode, isAsync) {
var mode = mode || 'ajax',
isAsync = isAsync || false;
$[mode]($.extend(_settings, {
url: "ResponsePage.aspx?second=" + seconds,
async: isAsync,
className: 'GET'
}));
},
post: function (seconds, mode, isAsync) {
var mode = mode || 'ajax',
isAsync = isAsync || false;
$[mode]($.extend(_settings, {
type: 'POST',
url: "PostPage.aspx",
data: { second: seconds },
async: isAsync,
className: 'POST'
}));
}
};
} ());
var launch = function (settings) {
$('#txtContainer').html('');
var mode = settings.mode,
isAsync = settings.isAsync;
ajaxSleep.get(12, mode, isAsync);
ajaxSleep.get(10, mode, isAsync);
ajaxSleep.get(8, mode, isAsync);
ajaxSleep.post(6, mode, isAsync);
ajaxSleep.post(4, mode, isAsync);
ajaxSleep.post(2, mode, isAsync);
}
$(document).ready(function () {
//第1种case
$('#btnLaunchAsync').click(function () {
launch({ isAsync: true });
});
//第2种case
$('#btnLaunchSync').click(function () {
launch({});
});
//第2种case
$('#btnLaunchQueue').click(function () {
launch({ mode: 'ajaxQueue', isAsync: true });
});
//第3种case
$('#btnLaunchSingle').click(function () {
launch({ mode: 'ajaxSingle', isAsync: true });
});
});
======================================================================
两种ajax请求实例:
一,实现队列ajax请求,
jQuery.ajaxQueue({
url: "test.php",
success: function(html){ jQuery("ul").append(html); }
});
二,实现同步ajax请求,
jQuery.ajaxSync({
url: "test.php",
success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
});
AjaxQueue队列请求js库代码
jQuery.ajaxQueue = function(o){
var _old = o.complete;
o.complete = function(){
if ( _old ) _old.apply( this, arguments );
jQuery.dequeue( jQuery.ajaxQueue, "ajax" );
};
jQuery([ jQuery.ajaxQueue ]).queue("ajax", function(){
jQuery.ajax( o );
});
};
AjaxQueue同步请求js库代码
jQuery.ajaxSync = function(o){
var fn = jQuery.ajaxSync.fn, data = jQuery.ajaxSync.data, pos = fn.length;
fn[ pos ] = {
error: o.error,
success: o.success,
complete: o.complete,
done: false
};
data[ pos ] = {
error: [],
success: [],
complete: []
};
o.error = function(){ data[ pos ].error = arguments; };
o.success = function(){ data[ pos ].success = arguments; };
o.complete = function(){
data[ pos ].complete = arguments;
fn[ pos ].done = true;
if ( pos == 0 || !fn[ pos-1 ] )
for ( var i = pos; i < fn.length && fn[i].done; i++ ) {
if ( fn[i].error ) fn[i].error.apply( jQuery, data[i].error );
if ( fn[i].success ) fn[i].success.apply( jQuery, data[i].success );
if ( fn[i].complete ) fn[i].complete.apply( jQuery, data[i].complete );
fn[i] = null;
data[i] = null;
}
};
return jQuery.ajax(o);
}; 
 
 
 
分享到:
评论

相关推荐

    ajaxQueue:基于jquery的Ajax请求队列

    ajaxQueue 基于jquery的Ajax请求队列 用于处理优先ajax与一般ajax请求 用法 var handler = AjaxQueue.setup(), // 实例化队列对象 priority = 0; // 优先级为0是普通请求,1为高级请求。 高级请求会优先发送 // 向...

    前端项目-jquery-ajaxQueue.zip

    《前端项目:jQuery与ajaxQueue深度解析》 在前端开发中,jQuery库以其简洁的API和强大的功能,一直是开发者们的首选工具之一。本项目“前端项目-jquery-ajaxQueue”聚焦于一个特定的jQuery插件——ajaxQueue,它为...

    jQuery AjaxQueue改进步骤

    在JavaScript和jQuery的世界中,AjaxQueue是一个非常有用的工具,它允许我们按照特定顺序发送异步AJAX请求,确保它们的执行顺序。在标题提到的改进中,主要关注了三个方面: 1. **支持complete回调作为函数数组**:...

    jquery.ajaxQueue:关于使用jQuery的效果队列进行Ajax排队的概念jQuery对象的证明

    jQuery ajaxQueue ajaxQueue是一个概念证明jQuery对象,用于使用jQuery的内置排队系统来排队ajax请求。 它既简单又轻巧,并且不够健壮,但是应该为您提供有效地滥用jQuery的队列系统以适合您的项目所需的起点;) ...

    jquery的 ajax序列插件

    **jQuery的Ajax序列插件——gnarf-jquery-ajaxQueue** 在Web开发中,jQuery的Ajax功能强大且易于使用,能够方便地实现异步数据交互。然而,在某些场景下,我们可能需要控制Ajax请求的顺序,确保一个请求在另一个...

    jQuery中queue()方法用法实例

    jQuery是目前最流行的JavaScript库之一,它简化了JavaScript编程,使得HTML文档遍历和操作、事件处理、动画和Ajax等操作变得简单。jQuery中的queue()方法是一个非常重要且实用的功能,它允许开发者对一个元素上运行...

    jquery资料

    4. **jQuery AjaxQueue**:用于管理和控制Ajax请求的队列,防止请求冲突。 5. **jQuery Form Plugin**:增强了表单提交功能,支持异步上传文件。 ### 四、学习资源 1. **官方文档**:jQuery的官方文档详尽且易于...

    ajaxQueue:轻松排队jQuery ajax请求

    ajaxQueue 这个jQuery插件创建了一种简单的方法来排队ajax请求,使它们能够按顺序执行,但仍异步运行。 当由于不安全/破坏性的POST / PUT / DELETE请求而试图处理应用程序中的竞争条件时,这可能非常有用。 例如...

    jquery-ajaxqueuer:ajax队列的jquery插件

    jquery plugin for ajax queue,jQuery Ajax队列扩展。 ####参数说明 $.ajaxQueuer([ajax队列], {配置}); 配置项(具有优先级): type String 请求方式,默认为GET async Boolean 是否为异步,默认为false,即...

    jquery ajax上传 带进度条

    在Web开发中,jQuery AJAX是实现异步数据交互的关键技术,它可以实现在不刷新整个页面的情况下与服务器交换数据。在用户界面中添加进度条功能,能够显著提升用户体验,特别是对于大文件上传或长时间运行的任务。...

    ajax (部分案例使用jquery)实例集锦

    5. 异步队列:通过jQuery的`.queue()`方法管理多个Ajax请求,避免同时发起大量请求导致服务器压力过大。 总结,这个"ajax (部分案例使用jquery)实例集锦"提供了丰富的Ajax和jQuery结合的实践应用,帮助开发者深入...

    jQuery插件集合

    - `jQuery AjaxQueue`管理异步请求队列,确保请求按照预定顺序执行。 - `jQuery Form Plugin`增强了表单提交功能,支持异步提交和文件上传。 5. **表单验证插件**: - `jQuery Validation Plugin`为表单提供易于...

    78个个常用的jquery 插件 jquer插件

    15. **Ajax增强插件**:如jQuery AjaxQueue,允许你更精细地控制Ajax请求的顺序和处理。 这些jQuery插件都是经过广泛测试和优化的,可以直接集成到项目中,减少开发时间和复杂度。通过合理选择和组合,开发者可以...

    jquery插件集合

    10. **Ajax和加载插件**:如jQuery AjaxQueue、jQuery LoadMore、pace.js等,帮助优化页面加载,实现分页加载、进度条显示等功能。 这个“jquery插件集合”就像一个工具箱,包含了网页开发中的各种常见需求。每个...

    jQuery AJAX 扩展 ----自动放弃及 队列实现

    本主题将深入探讨jQuery中的AJAX扩展,特别是关于自动放弃(Abandonment)和队列(Queue)的实现,这些特性对于优化异步请求管理和资源利用率至关重要。 **一、jQuery AJAX 基础** 在jQuery中,`$.ajax()`函数是...

    PHP+jQuery+Ajax多图片上传

    jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画效果和AJAX交互。将plupload与jQuery结合,可以进一步简化代码,提高开发效率。例如,通过jQuery选择器找到plupload的容器,然后初始化plupload...

    jquer之ajaxQueue简单实现代码

    在提供的代码中,`jQuery.ajaxQueue`是一个扩展的插件,它实现了`Ajax`请求的队列管理功能。以下是对这段代码的详细解释: 1. **初始化队列**: - `requests`数组用于存储待发送的`Ajax`请求对象。这些对象包含了`...

    Plupload + jquery.plupload.queue 批量上传 和 plupload.full单个上传

    Plupload 是一个强大的多浏览器文件上传组件,支持各种浏览器环境,包括IE6+、Firefox、Chrome、...总的来说,Plupload结合`jquery.plupload.queue`和C#后端的Ajax处理,可以构建出高效且友好的文件批量上传解决方案。

Global site tag (gtag.js) - Google Analytics