摘要:前言在一個(gè)項(xiàng)目中,前后端的交互是很頻繁的。內(nèi)容提示先獲取的值,如果沒有,獲取的值。
前言
在一個(gè)項(xiàng)目中,前后端的交互是很頻繁的。
有的是要獲取一個(gè)數(shù)據(jù),有的是要改標(biāo)一個(gè)狀態(tài),有的是需要提交用戶輸入,有的是要上傳一個(gè)文件,本文就是這么的一個(gè)代碼
/** * 通用的js前后端交互代碼 * 依賴layer.js * ajaxPost處理本頁提交的js請求,不對返回結(jié)果做處理,只 "顯示" 或者 "刷新頁面" 或者 "跳轉(zhuǎn)" * ajaxGet同上,但是沒有data選項(xiàng),如果有數(shù)據(jù)發(fā)送,跟隨在url中 * ajaxFile表單文件提交 * ajaxForm表單提交 * 表單提交的時(shí)候,需要提交的選項(xiàng)用class="send-item"標(biāo)識,默認(rèn)必填項(xiàng)。 * 內(nèi)容提示先獲取data-msg的值,如果沒有,獲取palceholder的值。 * 如果不是必填項(xiàng),需要添加no-required,即class="send-item no-required" * 表單帶有文件上傳的時(shí)候有兩種,一種是先上傳文件,獲得返回值即文件的存儲路徑,提交表單的時(shí)候提交文件存儲路徑,請使用ajaxForm * 如果文件內(nèi)容跟隨表單提交,請使用ajaxFile */ function ajaxPost(url, data){ layer.closeAll("msg"); layer.load(); $.ajax({ url: url, data: data, type: "post", dataType: "json", success: function(res){ success(res); } }) } function ajaxGet(url){ layer.closeAll("msg"); layer.load(); $.ajax({ url: url, type: "get", dataType: "json", success: function(res){ success(res); } }) } function ajaxFile($form,tips){ layer.closeAll("msg"); var url = $form.prop("action"); var data = new FormData(); var status = true; $form.find(".send-item").each(function(index,elem){ if(!status){ return false; } var name = elem.name; var value = elem.value; var type = elem.type; var msg = $(elem).data("msg") || elem.placeholder; if(type != "password"){ value = value.trim(); } if(elem.type == "checkbox" && !elem.checked){ if(tips){ layer.tips(msg, $(elem), {tips: 2, time: 1e3}); }else{ layer.msg(msg, {icon: 0, time: 1e3, maxWidth: 260}); } status = false; } if(elem.type == "file" && !elem.files[0]){ if(tips){ layer.tips(msg, $(elem).parent(), {tips: 2, time: 1e3}); }else{ layer.msg(msg, {icon: 0, time: 1e3, maxWidth: 260}); } status = false; } if(status && value == "" && !$(this).hasClass("no-required")){ if(tips){ layer.tips(msg, $(elem), {tips: 2, time: 1e3}); }else{ layer.msg(msg, {icon: 0, time: 1e3, maxWidth: 260}); } status = false; } if(elem.type == "file"){ var file = elem.files[0]; data.append("upload[]", file, file.name); }else{ data.append(name,value); } }); if(!status){ return false; } layer.load(); $.ajax({ url: url, data: data, type: "post", processData: false, contentType: false, dataType: "json", success: function(res){ success(res); } }) } function ajaxForm($form,tips){ var url = $form.prop("action"); var data = {}; var status = true; $form.find(".send-item").each(function(index,elem){ if(!status){ return false; } var name = elem.name; var value = elem.value; var type = elem.type; var msg = $(elem).data("msg") || elem.placeholder; if(type != "password"){ value = value.trim(); } if(elem.type == "checkbox" && !elem.checked){ if(tips){ layer.tips(msg, $(elem), {tips: 2, time: 1e3}); }else{ layer.msg(msg, {icon: 0, time: 1e3, maxWidth: 260}); } status = false; } if(status && value == "" && !$(this).hasClass("no-required")){ if(tips){ layer.tips(msg, $(elem), {tips: 2, time: 1e3}); }else{ layer.msg(msg, {icon: 0, time: 1e3, maxWidth: 260}); } status = false; } data[name] = value; }); if(!status){ return false; } layer.load(); $.ajax({ url: url, data: data, type: "post", dataType: "json", success: function(res){ success(res); } }) } function success(res){ /** * @res = {status: 1, msg: "", url: ""}; * @status => 0 失敗 * @status => 1 成功 * @msg => "提示" * @url => "reload" 頁面需要刷新 * @url => "/base" 頁面跳轉(zhuǎn)到"/base" */ layer.closeAll("loading"); if(res.msg){ layer.msg(res.msg, {icon: res.status, time: 2e3, maxWidth: 260}, function(){ if(res.url == "reload"){ window.location.reload(); return false; } if(res.url){ window.location.href = res.url; } }); }else{ if(res.url == "reload"){ window.location.reload(); return false; } if(res.url){ window.location.href = res.url; } } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/109460.html
摘要:現(xiàn)在一般需要分前后端,因?yàn)榇罅壳岸丝蚣芎凸ぞ哝湹挠咳敫词切枨髲?fù)雜了,讓前端可以跟后端獨(dú)立開來。但是,無論是前端去寫模板,亦或是完全前后端分離去寫,都脫離不了與后端進(jìn)行數(shù)據(jù)交互。 showImg(https://segmentfault.com/img/remote/1460000007317424?w=350&h=113); --> GitHub地址 舊石器時(shí)代,Web 開發(fā)并不會去...
摘要:說明我寫這篇文章的目的其實(shí)是想科普一下基礎(chǔ)的數(shù)據(jù)傳輸和交互流程,其實(shí)也就是寫協(xié)議相關(guān)的一些東西。同樣,相對于后端程序來說也無外乎就是一大堆有一定意義的字符串,而對于腳本來說,就是表示一個(gè)數(shù)據(jù)對象。 說明 我寫這篇文章的目的其實(shí)是想科普一下基礎(chǔ)的數(shù)據(jù)傳輸和交互流程,其實(shí)也就是寫http協(xié)議相關(guān)的一些東西。而寫這篇文章也主要是源于最近和長久以來很多人問的問題都是有關(guān)于這塊的(可能問題并不是...
摘要:同構(gòu)的關(guān)鍵要素完善的屬性及生命周期與客戶端的時(shí)機(jī)是同構(gòu)的關(guān)鍵。的一致性在前后端渲染相同的,將輸出一致的結(jié)構(gòu)。以上便是在同構(gòu)服務(wù)端渲染的提供的基礎(chǔ)條件??梢詫⒎庋b至的中,在服務(wù)端上生成隨機(jī)數(shù)并傳入到這個(gè)中,從而保證隨機(jī)數(shù)在客戶端和服務(wù)端一致。 原文地址 React 的實(shí)踐從去年在 PC QQ家校群開始,由于 PC 上的網(wǎng)絡(luò)及環(huán)境都相當(dāng)好,所以在使用時(shí)可謂一帆風(fēng)順,偶爾遇到點(diǎn)小磕絆,也能夠...
閱讀 3212·2021-11-22 12:01
閱讀 3832·2021-08-30 09:46
閱讀 833·2019-08-30 13:48
閱讀 3274·2019-08-29 16:43
閱讀 1732·2019-08-29 16:33
閱讀 1914·2019-08-29 13:44
閱讀 1478·2019-08-26 13:45
閱讀 2287·2019-08-26 11:44