url参数拼接 php,js URL参数的拼接方法比较_javascript技巧
最常见的方式就是:
url?arg1=value1&arg2=value2&arg3=value3...
这样的方式最常见最普通也最容易理解,但是在项目中,如果后面带的参数可变而且字段有不同的值或者不同的语义时,这样的方式可维护性和可读性其实并不高,而且代码也容易重复或者冗余。
比如下面的一个对CGI的请求串:
var url = "http://www.tenpay.com/app/v1.0/juhui.cgi?";
var queryString = "method=2&page=index";
if(content a){ //访问的首页的区域A,需要加参数subpage
queryString += "&subpage=a";
}else if(content b){//如果访问了区域B,则参数subpage要变为b
queryString += "&subpage=b";
}
if(spec_method){
//如果查看的时候要按照指定的筛选方法,则还需要加参数spec_method
queryString += "&spec_method=1"
}
这是最常见的拼串逻辑了,这样的代码是没有什么问题,但是写注释很麻烦,而且可读性也不高,字段说明也不明确,如果需要更换一个字段或在原来的基础上更改逻辑都比较麻烦。
我参看了一些同事关于这个问题的解决方案,第一种是将参数用对象的形式存起来,然后再写一个方法在请求时将参数拼起来:
var queryConfig={
"page" : "index",
"method" : 2, //1:按照方法A查看 2:按照方法B查看
"subpage" : -1, //-1:此条件不传递 a:查看contentA b:查看contentB
"spec_method" :-1 //-1:此条件不传递 1:按照销量高低查 2:按照时间查
};
var setQueryConfig = function(){
var _str = "";
for(var o in queryConfig){
if(queryConfig[o] != -1){
_str += o + "=" + queryConfig[o] + "&";
}
}
var _str = _str.substring(0, str.length-1);
return _str;
}
这个方法是挺不错的,优点就是将所有参数一目了然的在对象中全部列出来,注释也可以针对字段更详细,可读性和维护性都得到了提高;但是缺点就是代码有点多,还需要专门加一个方法来组合参数。
另外有一个方法是用数组的方法:
var queryString = [
"method=2", //method字段的注释
"page=index"
];
if(content a){ //访问的首页的区域A,需要加参数subpage
queryString.concat([
"subpage=a", //subpage注释
]);
}else if(content b){//如果访问了区域B,则参数subpage要变为b
queryString.concat([
"subpage=b", //subpage注释
]);
}
if(spec_method){
//如果查看的时候要按照指定的筛选方法,则还需要加参数 queryString.concat([
"spec_method=2", //spec_method注释
]);
}
queryString = queryString.join("&");
这个方法可读性可能比对象的方法差一些,但是维护性也比较高,代码量也比较少。相对来说这个方法我还比较喜欢。
恩恩,要不是昨天的代码评审,这样小的地方的代码优化我是要工作很久之后才能发现的。看来代码评审对自身能力提高是加速剂吖,哈哈。
这两个方法是我暂时发现的,要是后续再发现什么好方法,再补充进来~
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
url参数拼接 php,js URL参数的拼接方法比较_javascript技巧相关推荐
- php util.js,javascript中一些util方法汇总_javascript技巧
/***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function i ...
- php js 获取 客户端ip地址,JS获取客户端IP地址、MAC和主机名的7个方法汇总_javascript技巧...
今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...
- html5做文字颜色渐变代码,神奇!js+CSS+DIV实现文字颜色渐变效果_javascript技巧
本文实例为大家分享了DIV+CSS+JS实现的文字颜色渐变效果,供大家参考,具体内容如下 下面是 CSS 部分代码: body{ font:12px/1.5 Microsoft Yahei;}h3{ ...
- 用php语句绘制圆锥,JS+canvas画一个圆锥实例代码_javascript技巧
本篇文章给大家讲解html中用canvas函数配合JS画出一个圆锥形的图形实例,canvas是html5中新增加的新属性,对HTML5中的canvas感兴趣的朋友学习测试下吧. 以下是我们给大家分享是 ...
- php js date 格式化,javascript date格式化示例_javascript技巧
/** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符 * ...
- php js 循环对象属性,js 遍历对象的属性的代码_javascript技巧
如: Function.prototype.addMethod=function(methodName,func){ if(!this.prototype[methodName]){ this.pro ...
- php文本框限制只输入数字,js限制文本框只能输入数字方法小结_javascript技巧
有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 1,文本框只能输入数字代码(小数点也不能输入) 2,只能输入数字 ...
- java发送get请求参数_get方式请求接受参数的方法
1.获取jsp页面的url,然后通过js获取参数 function getQueryString(name) { var reg = new RegExp("(^|&)"+ ...
- js url参数的获取和设置以及删除
js url参数的获取和设置以及删除 //获取url参数的值:name是参数名function getQueryString(name) {var reg = new RegExp("(^| ...
- java redirect 跨域_如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式...
如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式 需求,项目A在服务器A上,需要重定向到服务器B上项目B,并且需要携带参数,参数对用户不可见,所以不可以将参数拼接在重定向ur ...
最新文章
- mysql怎么判断2个时间戳为同一天_请教一个需求js怎么判断时间戳是否属于同一天...
- 揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活
- 【深度学习】caffe 中的一些参数介绍
- 3级联动 ajax java_java+ajax(三级连动下拉框)
- SAP CRM WebClient UI on new focus工作原理
- mysql学习一 常用语句
- M2M技术、标准与智慧城市顶层设计方法
- C语言--求质数(详解)(筛选求质数)
- C#经纬度坐标算距离
- 计算机设备中运行速度最慢,决定电脑运行速度快慢的硬件因素
- 作为程序员,应该更关注代码质量还是只需要完成功能就好了?
- 代码审查(Code Review)
- chatgpt国内能用吗?详细解读gpt的使用方法
- NLP-D32-毕设答辩准备-《人类语言处理》03-04
- PHP正则表达式判断手机号码是否合法
- Ubuntu16.04安装VSCode,并修改系统界面和编辑面板字体大小
- IBM WebSphere Application Server与IBM Java V8官方帮助文档资源汇总
- 双面打印无效选择了文件服务器,使用高级选项打印(纸盘选择,双面打印,装订)...
- 5G NR标准 第13章 重传协议
- [附源码]java毕业设计游戏装备交易网站论文2022