GithubHelp home page GithubHelp logo

jquery-ajaxqueuer's Introduction

jQuery.ajaxQueuer

jquery plugin for ajax queue,jQuery Ajax队列扩展。

####参数说明

$.ajaxQueuer([ajax队列], {配置});

配置项(具有优先级):

type		String		请求方式,默认为GET
async		Boolean		是否为异步,默认为false,即同步
timeout		Number(ms)	设置请求超时时间(毫秒),此设置将覆盖全局设置
namePrefix	String		队列名称前缀,默认为'ajaxQueuer'

ajax队列是一个数组,由$.ajax方法的配置选项组成($.ajaxQueuer删除和增添一部分):

async											Boolean		在$.ajaxQueuer中默认为false,为同步队列,每个请求都需要上一个请求成功才能开始;
before(queue)									Function	在$.ajax()执行之前的处理,例如: loading;
beforeSend(xhr, queue, ajaxOptions)				Function	发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头;
cache											Boolean		默认为true,dataType为script和jsonp时默认为false;
complete(xhr, ts, queue, ajaxOptions)			Function	请求完成后回调函数,请求成功或失败之后均调用;
contentType										String		发送信息至服务器时内容编码类型,默认为"application/x-www-form-urlencoded";
crossDomain										Boolean		默认为同域请求,false;跨域请求为true,例如JSONP请求;
data											Key/Value	发送到服务器的数据,默认为{}
dataType										String		服务器返回的数据类型,默认为"text html"
error(xhr, status, queue, ajaxOptions)			Function	请求失败时调用此函数
headers											Key/Value	设置HTTP头的键值对,默认为{}
jsonp											String		在一个jsonp请求中重写回调函数的名字,默认为"callback";
index											Integer		队列序号
name											String		队列名称ID
priority										Integer		优先级数字,在异步方式下,数值越大优先执行和发送,但不一定是最先完成;
processData										Boolean		通过data选项传递进来的数据,如果是一个对象,都会处理转化成一个查询字符串,默认为true
status											String		请求完成的状态,例如"error"、"success"、"timeout";
statusCode										Key/Value	一组数值的HTTP代码和函数对象,当响应时调用了相应的代码,默认为{};
success(data, status, xhr, queue, ajaxOptions)	Function	请求成功后的回调函数
timeout											Number		设置请求超时时间(毫秒),此设置将覆盖全局设置;
type											String		请求方式,默认为GET
url												String		发送请求的目标地址

成员方法和属性:

# 当前执行的队列序号
nowIndex

# 获取配置选项
settings

# 队列ID
qid

# 队列数组
queue

# 队列总数
count

# 追加队列
add([ajax队列数组])
add({ajax队列})

# 开始执行队列, 依据配置同步或异步
run()

# 开始执行队列, 同步方式
synch()

# 开始执行队列, 异步方式
async()

# 清除整个队列
flush()

# 获取整个队列对象
getQueues()

# 只执行队列中的最后一个
last()

####使用方法

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="../src/jquery.ajaxqueuer.js"></script>
<script type="text/javascript">
	var ajaxQueuer = $.ajaxQueuer([
		{ 
			url : "ajax.get.php?no=1", 
			error : function(xhr, status) {
				console.error(this.name, "请求错误:", xhr, status);
			},
			success : function(data, status, xhr, queue, ajaxOptions) {
				console.log(this.name, "GET", data, ajaxOptions);
			},
			complete : function(xhr, status) {
				// this指向队列选项
				console.log(this.name, "请求完成:", xhr, status);	
			}
		},
		{
			url : "ajax.get.php", 
			data : "temp="+Math.random(),
			success : function(data, status, xhr, queue, ajaxOptions) {
				console.log(this.name, "GET", data, ajaxOptions);
			}
		},
		{
			url : "ajax.get.php?timeout", 
			data : "temp="+Math.random(), 
			priority : 3,
			statusCode : {
				0: function() {
					$("#debuger")[0].innerHTML += '<span style="color:red;">请求超时:status=>0, '+this.url+'</span><br/>';
				},
				404: function() { 
					$("#debuger")[0].innerHTML += '<span style="color:red;">请求失败:status=>404, '+this.url+'</span><br/>';
				}
			},
			before : function() {
				console.log('priority', this.priority);
			},
			error : function(xhr, status) {
				console.error(this.name, "GET", "请求失败", xhr, status);
			},
			success : function(data, status, xhr, queue, ajaxOptions) {
				console.log(this.name, "GET", data, ajaxOptions);
			}
		}
	], {
		type 	: "GET",
		async	: true,
		timeout	: 3000
	});

	ajaxQueuer.add([
		{
			url : "ajax.jsonp.php",
			data : {temp : Math.random()},
			dataType : "json",
			priority : 2,
			success : function(data, status, xhr, queue, ajaxOptions) {
				$("#debuger")[0].innerHTML += "<p>getJSON => ajax.jsonp.php =>" + JSON.stringify(data) + "</p>";
			}
		},
		{
			url : "ajax.jsonp.php",
			data : {temp : Math.random()},
			dataType : "json",
			priority : 2,
			success : function(data, status, xhr, queue, ajaxOptions) {
				$("#debuger")[0].innerHTML += "<p>getJSON => ajax.jsonp.php =>" + JSON.stringify(data) + "</p>";
			}
		}
	]).add({
		url : "ajax.post.php",
		type : "POST",
		priority : 1,
		before : function() {
			console.log('priority', this.priority);
		},
		data : {temp : Math.random()}, 
		success : function(data, status, xhr, queue, ajaxOptions) { 
			console.log('getJSON => ajax.post.php =>', this.url, "\n", data);
			$("#debuger")[0].innerHTML += "<p>getJSON => ajax.post.php =>" + data + "</p>";
		}
	}).run(); 	
</script>

同时也支持在Require.js和Sea.js中使用:

# 在Sea.js中使用
<script type="text/javascript" src="js/sea.js"></script>
<script type="text/javascript">
	seajs.config({
		base : "./js",
    alias : {
      "jquery": "jquery.min"
    }
  });

	seajs.use("./js/main");
</script>

# main.js
define(function(require, exports, module) {	
	var $ = require('jquery');
	require('../../src/jquery.ajaxqueuer'); 
	require('../js/jquery.ajaxqueuer.demo');  
});

# 在Require.js中使用
<script type="text/javascript" src="js/require.min.js"></script>
<script type="text/javascript">
	require.config({
    paths: {
      "jquery": "js/jquery.min"
    }
  });

  require(['../src/jquery.ajaxqueuer', './js/jquery.ajaxqueuer.demo'], function () {   
	});
</script>

####License

The MIT License (MIT)

Copyright (c) 2014 Pandao

jquery-ajaxqueuer's People

Contributors

pandao avatar

Watchers

 avatar  avatar  avatar

Forkers

cary929

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.