时间:2021-05-25
由于遇到相关序列化的问题,但是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() 函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
上一篇文章写到原生js取代jquery的一些常用函数:原生js仿jquery一些常用方法,那么,ajax如何实现呢?如下是一个比较完整的ajax()functi
本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法。分享给大家供大家参考,具体如下:有的时候需要动态加载一个javascript文件,并
本文实例讲述了原生js实现的贪吃蛇网页版游戏。分享给大家供大家参考。具体实现方法如下:原生js写的贪吃蛇网页版游戏Star={init:function(){v
js原生方法map实现mapArray.prototype.my_map=function(callback){if(!Array.isArray(this)|
实现原理js的原生方法被覆盖掉以后,如果你还没让原生方法又从新指向一个新的变量名,那就gg了。所以,关键就是怎么再获取到原生的方法。实现的原理呢就是创建一个新的