原生JS實現$.param() 函數的方法
更新時間:2018年08月10日 10:53:42 作者:Cheny0815
這篇文章主要介紹了原生JS實現$.param() 函數的方法,由于遇到相關序列化的問題,但是vue項目中由于減少隊jquery引用的限制,導致不能用$.param來序列化參數,下面小編給大家分享了實例代碼,需要的朋友參考下吧
由于遇到相關序列化的問題,但是vue項目中由于減少隊jquery引用的限制,導致不能用$.param
來序列化參數,所以寫了如下方法用來解決相關問題,但由于考慮不全,可能存在判斷不全或者代碼冗余等情況,希望多提意見,多多改善
var personObj = { name:'cheny0815', age:24, c:[{ id:1, name:2 },{ id:2, name:3 }], other:{ a:1, b:{ c:2, d:{ a:1, b:{ e:1, f:2 } } } }, } var nextStr = ''; function changeDataType(obj){ let str = '' if(typeof obj == 'object'){ for(let i in obj){ if(typeof obj[i] != 'function' && typeof obj[i] != 'object'){ str += i + '=' + obj[i] + '&' ; }else if (typeof obj[i] == 'object'){ nextStr = ''; str += changeSonType(i, obj[i]) } } } return str.replace(/&$/g, ''); } function changeSonType(objName, objValue){ if(typeof objValue == 'object'){ for(let i in objValue){ if(typeof objValue[i] != 'object'){ let value = objName + '[' + i + ']=' + objValue[i]; nextStr += encodeURI(value) + '&'; }else{ changeSonType(objName + '[' + i + ']', objValue[i]); } } } return nextStr; } var resultParam = $.param(personObj); var resultMyself = changeDataType(personObj); document.write('resultMyself===>' + resultMyself + '<br><hr>') document.write('resultParam ===>' + resultParam + '<br><hr>') document.write('resultMyself === resultParam ===>' + (resultMyself === resultParam))
結果如下:
總結
以上所述是小編給大家介紹的原生JS實現$.param() 函數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
javascript使用for循環(huán)批量注冊的事件不能正確獲取索引值的解決方法
這篇文章主要介紹了javascript使用for循環(huán)批量注冊的事件不能正確獲取索引值的解決方法,對比分析了出現問題的代碼與修改后的代碼,并給出了采用閉包實現的方法,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12淺談JavaScript事件綁定的常用方法及其優(yōu)缺點分析
下面小編就為大家?guī)硪黄獪\談JavaScript事件綁定的常用方法及其優(yōu)缺點分析。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11