<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        js中url對象化管理分析

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:22:44
        文檔

        js中url對象化管理分析

        js中url對象化管理分析:1.問題描述 url是web編寫過程中一種不可或缺的需要打交道的值,不論是在頁面跳轉(zhuǎn)中,還是ajax請求數(shù)據(jù)或是其他框架插件的url提供. 對于很多程序猿來說,js中經(jīng)常遇到需要變更url(主要是其中所包含的參數(shù))的情況,大多數(shù)人使用的方法是直接拼接. 這種方法勝在簡
        推薦度:
        導(dǎo)讀js中url對象化管理分析:1.問題描述 url是web編寫過程中一種不可或缺的需要打交道的值,不論是在頁面跳轉(zhuǎn)中,還是ajax請求數(shù)據(jù)或是其他框架插件的url提供. 對于很多程序猿來說,js中經(jīng)常遇到需要變更url(主要是其中所包含的參數(shù))的情況,大多數(shù)人使用的方法是直接拼接. 這種方法勝在簡

        1.問題描述

        url是web編寫過程中一種不可或缺的需要打交道的值,不論是在頁面跳轉(zhuǎn)中,還是ajax請求數(shù)據(jù)或是其他框架插件的url提供.
        對于很多程序猿來說,js中經(jīng)常遇到需要變更url(主要是其中所包含的參數(shù))的情況,大多數(shù)人使用的方法是直接拼接.
        這種方法勝在簡單,同樣存在不少不足,如:

        拼接形成的url安全性上總是存在潛在的危險;

        從某個完整url中獲取其中所包含的參數(shù)和純地址,以進(jìn)行下一步的比較,也是件較麻煩的事情;

        2.解決思路

        基于以上問題,我的解決策略是將url進(jìn)行對象化的管理,將url純地址,url參數(shù)分別放到一個對象的各個屬性中.
        每次對url的變更,可使用先分析為對象格式,再變更其中某些參數(shù),再組建成為新的url方法.
        這樣構(gòu)建再開始做的時候也許會覺得有些多此一舉,但在處理一些比較復(fù)雜的情況時,會非常方便.

        3.演示代碼

        首先提供分析和組建url的方法(可以考慮將之封裝成一個方法,方法稱的話可以起的再復(fù)雜些以避免重復(fù)):

        /**
         * 數(shù)據(jù)處理-解析url為一個對象
         */
        function parseUrl(strUrl){
        	var arrUrlPart=strUrl.split('?');
        	var strUrl=arrUrlPart[0];
        	var mUrl={
        	url:strUrl
        	};
        	if(arrUrlPart.length===2){
        	var strParam=arrUrlPart[1];
        	var arrParamPart=strParam.split('&');
        	for(i in arrParamPart){
        	var strParamPart=arrParamPart[i];
        	var arrParamKy=strParamPart.split('=');
        	var strKey=arrParamKy[0];
        	var strValue=decodeURIComponent(arrParamKy[1]);
        	mUrl[strKey]=strValue;
        	}
        	}
        	return mUrl;
        }
        /**
         * 數(shù)據(jù)處理-構(gòu)成/組建url(字符串)
         */
        function concatUrl(mUrl){
        	var strUrl=mUrl.url;
        	var strParam='';
        	for(strKey in mUrl){
        	if(strKey==='url'||mUrl[strKey]===null)
        	continue;
        	strParam+=(strKey+'='+encodeURIComponent(mUrl[strKey])+'&');//注入避免
        	}
        	if(strParam!==''){
        	strParam=('?'+strParam.substring(0,strParam.length-1));
        	}
        	return strUrl+strParam;
        }

        以下是用法示例,當(dāng)然僅展示了比較簡單的情況,可能不能完全體現(xiàn)url對象化管理的威力:

        var strUrl1='www.example.com/admin/product/main?group_code=test_group&p_code=shangpin1';
        var mUrl1=parseUrl(strUrl1);
        console.log(mUrl1.p_code);
        mUrl1.p_code='shangpin2';
        var strUrl2=concatUrl(mUrl1);
        console.log(strUrl2);
        mUrl1.group_code=null;
        mUrl1.user_name='用?&=戶';
        var strUrl3=concatUrl(mUrl1);
        console.log(strUrl3);
        var mUrl3=parseUrl(strUrl3);
        console.log(mUrl3.user_name);

        打印結(jié)果為:

        shangpin1
        www.example.com/admin/product/main?group_code=test_group&p_code=shangpin2
        www.example.com/admin/product/main?p_code=shangpin2&user_name=%E7%94%A8%3F%26%3D%E6%88%B7
        用?&=戶

        以上情況,特別是情況3,可以說將url轉(zhuǎn)換功能使用的非常靈活了.

        當(dāng)然實(shí)際在使用的時候,為安全起見,產(chǎn)生一個新的url通常會先創(chuàng)建一個新的對象,而非在原有對象基礎(chǔ)上修改.

        4.待改進(jìn)的地方

        以上情況適用于非路徑參數(shù)的情況下,當(dāng)使用路徑參數(shù)時,如:

        www.example.com/admin/product/list/1

        這個1作為參數(shù),在該方法就不適用了.

        也可以優(yōu)化方法,將方法轉(zhuǎn)化為適用于路徑參數(shù)的解析與重構(gòu),這又是后話了。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js中url對象化管理分析

        js中url對象化管理分析:1.問題描述 url是web編寫過程中一種不可或缺的需要打交道的值,不論是在頁面跳轉(zhuǎn)中,還是ajax請求數(shù)據(jù)或是其他框架插件的url提供. 對于很多程序猿來說,js中經(jīng)常遇到需要變更url(主要是其中所包含的參數(shù))的情況,大多數(shù)人使用的方法是直接拼接. 這種方法勝在簡
        推薦度:
        標(biāo)簽: js 對象 解析
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 最近免费中文字幕大全高清大全1| 久久久久亚洲av无码专区喷水| 亚洲三级在线观看| 亚洲w码欧洲s码免费| 亚洲精品不卡视频| 久久www免费人成看片| 久久精品九九亚洲精品| 亚洲视频在线观看免费视频| 亚洲黄色三级网站| 无码免费午夜福利片在线| 亚洲综合无码一区二区痴汉| 成人毛片视频免费网站观看| 亚洲日韩中文字幕无码一区| 免费涩涩在线视频网| 亚洲乱妇老熟女爽到高潮的片| 狼友av永久网站免费观看| 成人特级毛片69免费观看| 日韩精品亚洲aⅴ在线影院| 久久久久免费精品国产小说| 亚洲国产理论片在线播放| 四虎在线免费播放| 一级做a爰片久久毛片免费陪| 亚洲一区二区三区香蕉| 91在线老王精品免费播放| 亚洲午夜精品久久久久久app| 国产乱子伦精品免费无码专区| eeuss免费天堂影院| 亚洲精品高清国产一久久| 国产在线观看片a免费观看| 国产亚洲高清在线精品不卡| 国产成人亚洲精品狼色在线| 四虎精品视频在线永久免费观看| 亚洲一线产品二线产品| 久久亚洲国产精品123区| 2019中文字幕在线电影免费| 亚洲经典千人经典日产| 100部毛片免费全部播放完整| 亚洲AV无码一区二区三区牛牛| 亚洲?V无码乱码国产精品| 99热在线精品免费播放6| MM1313亚洲国产精品|