好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > 多ajax請(qǐng)求的各類(lèi)解決方案(同步, 隊(duì)列, cancel請(qǐng)求)

多ajax請(qǐng)求的各類(lèi)解決方案(同步, 隊(duì)列, cancel請(qǐng)求)

熱門(mén)標(biāo)簽:如何用地圖標(biāo)注各分公司 信貸電銷(xiāo)機(jī)器人有用嗎 電銷(xiāo)機(jī)器人適用范圍 察縣地圖標(biāo)注 接聽(tīng)電話機(jī)器人哪有 莆田防封電銷(xiāo)卡價(jià)格 廣西ai語(yǔ)音電銷(xiāo)機(jī)器人哪家好 蓄意標(biāo)記地圖標(biāo)注 辦理一個(gè)400電話多少錢(qián)
•多個(gè)ajax請(qǐng)求同時(shí)發(fā)送,相互無(wú)依賴(lài)。
•多個(gè)ajax請(qǐng)求相互依賴(lài),必須有先后順序。
•多個(gè)請(qǐng)求被同時(shí)發(fā)送,只需要最后一個(gè)請(qǐng)求。
第1種case
應(yīng)用場(chǎng)景: 這個(gè)場(chǎng)景很多,一個(gè)頁(yè)面打開(kāi)是多個(gè)區(qū)域同時(shí)請(qǐng)求后臺(tái)得到各自的數(shù)據(jù),沒(méi)依賴(lài),沒(méi)順序。
處理方案: 直接用jquery的ajax函數(shù)。這個(gè)用的非常多,這里從略,可看后面的代碼中例子。
第2種case
應(yīng)用場(chǎng)景: 多個(gè)ajax請(qǐng)求,需要順序執(zhí)行,后一個(gè)ajax請(qǐng)求的執(zhí)行參數(shù)是前一個(gè)ajax的結(jié)果。例如: 用戶登錄后我們發(fā)送一次請(qǐng)求得到用戶的應(yīng)用ID,然后利用應(yīng)用ID發(fā)送一次請(qǐng)求得到具體的應(yīng)用內(nèi)容(例子雖然不是太恰當(dāng),但基本就是這個(gè)意思了)。
處理方法:
1. 利用ajax參數(shù)async設(shè)置為false,進(jìn)行同步操作。(這個(gè)方法只適合同域操作,跨域需使用下面兩種方法)
2. 利用ajax嵌套(這個(gè)同第1種情況)
3. 利用隊(duì)列進(jìn)行操作
jquery ajax隊(duì)列操作核心代碼:
復(fù)制代碼 代碼如下:

(function ($) {
var 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);
}
};
})(jQuery);

第3中case
應(yīng)用場(chǎng)景: 比較典型的是autocomplete控件的操作,這個(gè)我們可以使用第2種情況的處理方法,但我們可能只需要最后次按鍵后返回的結(jié)果,這樣利用第2種處理方法未免有些浪費(fèi)。
處理方法: 保留最后一次請(qǐng)求,cancel之前的請(qǐng)求。
復(fù)制代碼 代碼如下:

(function ($) {
var jqXhr = {};
$.ajaxSingle = function (settings) {
var options = $.extend({ className: 'DEFEARTNAME' }, $.ajaxSettings, settings);
if (jqXhr[options.className]) {
jqXhr[options.className].abort();
}
jqXhr[options.className] = $.ajax(options);
};
})(jQuery);

對(duì)于這些case都是在多個(gè)ajax請(qǐng)求,響應(yīng)時(shí)間不能控制的情況。下面是完整Demo代碼。
復(fù)制代碼 代碼如下:

(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 });
});
});

default.html
復(fù)制代碼 代碼如下:

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head id="Head1" runat="server">
title>/title>
script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">/script>
script type="text/javascript" src="js/default.js">/script>
/head>
body>
form id="form1" runat="server">
input type="button" id="btnLaunchAsync" value="Launch Asynchronous Request" />
input type="button" id="btnLaunchSync" value="Launch Synchronous Request" />
input type="button" id="btnLaunchQueue" value="Launch Requested Queue" />
input type="button" id="btnLaunchSingle" value="Launch Single Request" />
div id="txtContainer">/div>
/form>
/body>
/html>

PostPage.aspx ResponsePage.aspx
復(fù)制代碼 代碼如下:

//ResponsePage.aspx
protected void Page_Load(object sender, EventArgs e)
{
int seconds = int.Parse(Request.QueryString["second"]);
Thread.Sleep(seconds*1000);
Response.Write("GET: selpt for "+ seconds.ToString() +" sec(s)");
}
//PostPage.aspx
protected void Page_Load(object sender, EventArgs e)
{
int seconds = int.Parse(Request.Form["second"]);
Thread.Sleep(seconds * 1000);
Response.Write("POST: selpt for " + seconds.ToString() + " sec(s)");
}

后注: 個(gè)人能力有限,如有錯(cuò)誤敬請(qǐng)指點(diǎn)。這些只是些根據(jù)一些特定情況下的處理,如果一個(gè)ajax請(qǐng)求能解決的問(wèn)題切勿利用兩個(gè)請(qǐng)求來(lái)處理,畢竟需要占用資源。我還是相信沒(méi)有最好的方案,只有最適合的方案。
您可能感興趣的文章:
  • 淺析ajax請(qǐng)求json數(shù)據(jù)并用js解析(示例分析)
  • Ajax請(qǐng)求中的異步與同步,需要注意的地方說(shuō)明
  • AJAX跨域請(qǐng)求json數(shù)據(jù)的實(shí)現(xiàn)方法
  • Ajax請(qǐng)求內(nèi)嵌套Ajax請(qǐng)求示例代碼
  • 如何將ajax請(qǐng)求返回的Json格式數(shù)據(jù)循環(huán)輸出成table形式
  • Ajax請(qǐng)求在數(shù)據(jù)量大的時(shí)候出現(xiàn)超時(shí)的解決方法
  • ajax請(qǐng)求亂碼的解決方法(中文亂碼)
  • ajax請(qǐng)求成功后新開(kāi)窗口window.open()被攔截解決方法
  • ajax 同步請(qǐng)求和異步請(qǐng)求的差異分析
  • 在實(shí)戰(zhàn)中可能碰到的幾種ajax請(qǐng)求方法詳解

標(biāo)簽:鷹潭 延邊 張掖 銅陵 儋州 益陽(yáng) 阿拉善盟

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《多ajax請(qǐng)求的各類(lèi)解決方案(同步, 隊(duì)列, cancel請(qǐng)求)》,本文關(guān)鍵詞  多,ajax,請(qǐng)求,的,各類(lèi),解決方案,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《多ajax請(qǐng)求的各類(lèi)解決方案(同步, 隊(duì)列, cancel請(qǐng)求)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于多ajax請(qǐng)求的各類(lèi)解決方案(同步, 隊(duì)列, cancel請(qǐng)求)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 免费无码国产在线看瑜茄| 一个偷偷看b站| 无限高潮91ROPN九色| 精品人妻人人做人人爽夜夜爽 | 白嫩白嫩BBWBBWBBw| 操美女网址| 国产成人精品亚洲2020| 桌球上的艳遇未删除版在线播放| 日本Av无码潮喷一区二区在线| 国产靠逼视频| 三级经典k8播放| 中文字幕与公奈奈美| 仁科百华vs黑人巨大dvd| 亚洲 欧美 日韩 精品 自拍| 漂亮的保姆三| 美女脱全身内衣火辣| 91综合在线视频| 国产成人艳妇在线观看| 男人做一次爱能舒服多久| 美女被羞羞网站| 日本啪啪片| 欧美αv天堂在线视频| 欧美一级特黄aaa大片| 久久精品人人| 三上悠亚亚洲一区在线播放| 敌伦交换第5部分李强小说| 国产国语特级**a毛片| 快射视频网| 色吊丝色吊丝色吊丝av| 温润公子受被肉到失禁| 女色狠xx网18| xxxxxxx泡妞国产| 韩国婬乱a一级毛片 多女| 里番全彩本子库acg污妖王| 亚洲欲色| a级大胆欧美人体大胆666| 日韩男女嘿咻视频在线观看| 色戒完整未删版在线看| 男女一进一出全过程视频| 老女人的逼| 白嫩白嫩BBBBBBBBB-|