摘要:請求地址,異步同步,會鎖死瀏覽器,并且方法會報(bào)瀏覽器警告提交方法提交數(shù)據(jù)賬號密碼返回?cái)?shù)據(jù)類型成功返回回調(diào)錯(cuò)誤信息回調(diào)請求超時(shí)
function ajax(options) { function empty() {} function obj2Url(obj) { if (obj && obj instanceof Object) { var arr = []; for (var i in obj) { if (obj.hasOwnProperty(i)) { if (typeof obj[i] == "function") obj[i] = obj[i](); if (obj[i] == null) obj[i] = ""; arr.push(escape(i) + "=" + escape(obj[i])); } } return arr.join("&").replace(/%20/g, "+"); } else { return obj; } }; var opt = { url: "", //請求地址 sync: true, //true,異步 | false 同步,會鎖死瀏覽器,并且open方法會報(bào)瀏覽器警告 method: "GET", //提交方法 data: null, //提交數(shù)據(jù) username: null, //賬號 password: null, //密碼 dataType: null, //返回?cái)?shù)據(jù)類型 success: empty, //成功返回回調(diào) error: empty, //錯(cuò)誤信息回調(diào) timeout: 0, //請求超時(shí)ms }; for (var i in options) if (options.hasOwnProperty(i)) opt[i] = options[i]; var accepts = { script: "text/javascript, application/javascript, application/x-javascript", json: "application/json", xml: "application/xml, text/xml", html: "text/html", text: "text/plain" }; var abortTimeout = null; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { xhr.onreadystatechange = empty; clearTimeout(abortTimeout); var result,dataType, error = false; if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == "file:")) { if (xhr.responseType == "arraybuffer" || xhr.responseType == "blob") { result = xhr.response; } else { result = xhr.responseText; dataType = opt.dataType ? opt.dataType : xhr.getResponseHeader("content-type").split(";", 1)[0]; for (var i in accepts) { if (accepts.hasOwnProperty(i) && accepts[i].indexOf(dataType) > -1) dataType = i; } try { if (dataType == "script") { eval(result); } else if (dataType == "xml") { result = xhr.responseXML } else if (dataType == "json") { result = result.trim() == "" ? null : JSON.parse(result) } } catch (e) { opt.error(e, xhr); xhr.abort(); } } opt.success(result, xhr); } else { opt.error(xhr.statusText, xhr); } } }; if (opt.method == "GET") { var parse = opt.url.parseURL(); opt.data = Object.assign({}, opt.data, parse.params); opt.url = parse.pathname + "?" + obj2Url(opt.data); opt.data = null; } xhr.open(opt.method, opt.url, opt.sync, opt.username, opt.password); if (opt.method == "POST") xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); if (opt.timeout > 0) { abortTimeout = setTimeout(function() { xhr.onreadystatechange = empty xhr.abort(); opt.error("timeout", xhr); }, opt.timeout) } xhr.send(opt.data ? obj2Url(opt.data) : null); }
test
ajax({ url:"/url", data:{ i:new Date().getTime(), }, success:function(data,xhr){ console.log(data,xhr); }, error:function(err,xhr){ console.log(err,xhr); } });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91194.html
摘要:選擇的理由是一個(gè)用于現(xiàn)代瀏覽器的與大體兼容的庫。環(huán)境搭建分析環(huán)境的搭建僅需要一個(gè)常規(guī)頁面和原始代碼一個(gè)常規(guī)頁面打開的首頁即可,在開發(fā)人員工具中即可使用原始代碼本篇分析的代碼參照,進(jìn)入該代碼分支中即可。 選擇 Zepto 的理由 Zepto is a minimalist JavaScript library for modern browsers with a largely jQue...
摘要:目前接觸最多的頁面開發(fā),基本還是使用的。主要原因基于操作方便頁面簡單兼容良好新手多沒有能配合使用其他方案的人。,是的核心理念。 目前接觸最多的頁面開發(fā),基本還是使用 JQuery 的。主要原因基于:操作方便;頁面簡單;兼容良好;新手多……沒有能配合使用其他方案的人。因此,本篇文章就是寫著玩加吐點(diǎn)槽的。 Write Less,Do More是JQuery的核心理念。所以你們就不要在工作中...
摘要:目前接觸最多的頁面開發(fā),基本還是使用的。主要原因基于操作方便頁面簡單兼容良好新手多沒有能配合使用其他方案的人。,是的核心理念。 目前接觸最多的頁面開發(fā),基本還是使用 JQuery 的。主要原因基于:操作方便;頁面簡單;兼容良好;新手多……沒有能配合使用其他方案的人。因此,本篇文章就是寫著玩加吐點(diǎn)槽的。 Write Less,Do More是JQuery的核心理念。所以你們就不要在工作中...
摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡化異步編程的還是,在端,建議考慮。 本篇,簡單實(shí)現(xiàn)一個(gè)promise,主要普及promise的用法。 一直以來,JavaScript處理異步都是以callback的方式,在前端開發(fā)領(lǐng)域callback機(jī)制...
摘要:近幾年隨著開發(fā)模式的逐漸成熟,規(guī)范順勢而生,其中就包括提出了規(guī)范,完全改變了異步編程的寫法,讓異步編程變得十分的易于理解。最后,是如此的優(yōu)雅但也只是解決了回調(diào)的深層嵌套的問題,真正簡化異步編程的還是,在端,建議考慮。 前段時(shí)間頻頻看到Promise這個(gè)詞,今天發(fā)現(xiàn)騰訊AlloyTeam寫得這篇很贊,遂轉(zhuǎn)之。 原文鏈接 本篇,主要普及promise的用法。 一直以來,JavaScrip...
閱讀 1462·2021-09-02 13:57
閱讀 1878·2019-08-30 15:55
閱讀 2416·2019-08-30 15:54
閱讀 2254·2019-08-30 15:44
閱讀 2740·2019-08-30 13:18
閱讀 487·2019-08-30 13:02
閱讀 651·2019-08-29 18:46
閱讀 1670·2019-08-29 11:25