JQuery中模擬image的ajaxPrefilter與ajaxTransport處理
更新時(shí)間:2015年06月19日 09:15:34 投稿:junjie
這篇文章主要介紹了JQuery中模擬image的ajaxPrefilter與ajaxTransport處理,本文直接給出模擬實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
////////////////////////////////////////////////////////////////// // options 是請(qǐng)求的選項(xiàng) // // originalOptions 值作為提供給Ajax方法未經(jīng)修改的選項(xiàng),因此,沒(méi)有ajaxSettings設(shè)置中的默認(rèn)值 // // jqXHR 是請(qǐng)求的jqXHR對(duì)象 // ////////////////////////////////////////////////////////////////// $.ajaxPrefilter("image", function(options, originalOptions, jqXHR) { //通過(guò)預(yù)處理器轉(zhuǎn)化類型 if (options.test) { options.type = 'GET' } //增加前綴 options.url = "http://img.mukewang.com/" + options.url }); /////////////////////// // 請(qǐng)求分發(fā)器 transports // /////////////////////// $.ajaxTransport("image", function(s) { if (s.type === "GET" && s.async) { var image; return { send: function(_, callback) { image = new Image(); function done(status) { if (image) { var statusText = (status == 200) ? "success" : "error", tmp = image; image = image.onreadystatechange = image.onerror = image.onload = null; callback(status, statusText, { image: tmp }); } } image.onreadystatechange = image.onload = function() { done(200); }; image.onerror = function() { done(404); }; show(s.url) image.src = s.url; }, abort: function() { if (image) { image = image.onreadystatechange = image.onerror = image.onload = null; } } }; } }); $("#test").click(function(){ //執(zhí)行一個(gè)異步的HTTP(Ajax)的請(qǐng)求。 var ajax = $.ajax({ test : true, //測(cè)試 url : '547d5a45000156f406000338-590-330.jpg', dataType : 'image', type : 'POST', data: { foo: ["bar1", "bar2"] }, //這個(gè)對(duì)象用于設(shè)置Ajax相關(guān)回調(diào)函數(shù)的上下文 context: document.body, //請(qǐng)求發(fā)送前的回調(diào)函數(shù),用來(lái)修改請(qǐng)求發(fā)送前jqXHR beforeSend: function(xhr) { xhr.overrideMimeType("text/plain; charset=x-user-defined"); show('局部事件beforeSend') }, //請(qǐng)求完成后回調(diào)函數(shù) (請(qǐng)求success 和 error之后均調(diào)用) complete: function() { show('局部事件complete') }, error: function() { show('局部事件error請(qǐng)求失敗時(shí)調(diào)用此函數(shù)') }, success: function() { show('局部事件success') } }) ajax.done(function() { show('done') }).fail(function() { show('fail') }).always(function() { show('always') })
您可能感興趣的文章:
相關(guān)文章
web的各種前端打印方法之jquery打印插件jqprint實(shí)現(xiàn)網(wǎng)頁(yè)打印
本文介紹JQuery插件Jqprint實(shí)現(xiàn)網(wǎng)頁(yè)打印,不懂的同學(xué)正可借此機(jī)會(huì)學(xué)習(xí)下,以備不時(shí)之需,話不多說(shuō),切入主題2013-01-01在css加載完畢后自動(dòng)判斷頁(yè)面是否加入css或js文件
使用jquery ui中的dialog()來(lái)顯示消息框,為了使方法方便調(diào)用,便加入了自動(dòng)判斷頁(yè)面是否加入了ui.js和ui.css,具體實(shí)現(xiàn)代碼如下2014-09-09jQuery實(shí)現(xiàn)驗(yàn)證用戶登錄
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)驗(yàn)證用戶登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12jQuery實(shí)現(xiàn)ajax調(diào)用WCF服務(wù)的方法(附帶demo下載)
這篇文章主要介紹了jQuery實(shí)現(xiàn)ajax調(diào)用WCF服務(wù)的方法,以完整實(shí)例形式分析了jQuery的ajax前端調(diào)用及后臺(tái)交互調(diào)用WCF服務(wù)的相關(guān)技巧,并附帶完整實(shí)例共讀者下載,需要的朋友可以參考下2015-12-12jquery實(shí)現(xiàn)移動(dòng)端按鈕組左右滑動(dòng)
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)移動(dòng)端按鈕組左右滑動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03