最常见的方式就是:

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技巧相关推荐

  1. php util.js,javascript中一些util方法汇总_javascript技巧

    /***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function i ...

  2. php js 获取 客户端ip地址,JS获取客户端IP地址、MAC和主机名的7个方法汇总_javascript技巧...

    今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...

  3. html5做文字颜色渐变代码,神奇!js+CSS+DIV实现文字颜色渐变效果_javascript技巧

    本文实例为大家分享了DIV+CSS+JS实现的文字颜色渐变效果,供大家参考,具体内容如下 下面是 CSS 部分代码: body{ font:12px/1.5 Microsoft Yahei;}h3{ ...

  4. 用php语句绘制圆锥,JS+canvas画一个圆锥实例代码_javascript技巧

    本篇文章给大家讲解html中用canvas函数配合JS画出一个圆锥形的图形实例,canvas是html5中新增加的新属性,对HTML5中的canvas感兴趣的朋友学习测试下吧. 以下是我们给大家分享是 ...

  5. php js date 格式化,javascript date格式化示例_javascript技巧

    /** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符 * ...

  6. php js 循环对象属性,js 遍历对象的属性的代码_javascript技巧

    如: Function.prototype.addMethod=function(methodName,func){ if(!this.prototype[methodName]){ this.pro ...

  7. php文本框限制只输入数字,js限制文本框只能输入数字方法小结_javascript技巧

    有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 1,文本框只能输入数字代码(小数点也不能输入) 2,只能输入数字 ...

  8. java发送get请求参数_get方式请求接受参数的方法

    1.获取jsp页面的url,然后通过js获取参数 function getQueryString(name) { var reg = new RegExp("(^|&)"+ ...

  9. js url参数的获取和设置以及删除

    js url参数的获取和设置以及删除 //获取url参数的值:name是参数名function getQueryString(name) {var reg = new RegExp("(^| ...

  10. java redirect 跨域_如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式...

    如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式 需求,项目A在服务器A上,需要重定向到服务器B上项目B,并且需要携带参数,参数对用户不可见,所以不可以将参数拼接在重定向ur ...

最新文章

  1. mysql怎么判断2个时间戳为同一天_请教一个需求js怎么判断时间戳是否属于同一天...
  2. 揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活
  3. 【深度学习】caffe 中的一些参数介绍
  4. 3级联动 ajax java_java+ajax(三级连动下拉框)
  5. SAP CRM WebClient UI on new focus工作原理
  6. mysql学习一 常用语句
  7. M2M技术、标准与智慧城市顶层设计方法
  8. C语言--求质数(详解)(筛选求质数)
  9. C#经纬度坐标算距离
  10. 计算机设备中运行速度最慢,决定电脑运行速度快慢的硬件因素
  11. 作为程序员,应该更关注代码质量还是只需要完成功能就好了?
  12. 代码审查(Code Review)
  13. chatgpt国内能用吗?详细解读gpt的使用方法
  14. NLP-D32-毕设答辩准备-《人类语言处理》03-04
  15. PHP正则表达式判断手机号码是否合法
  16. Ubuntu16.04安装VSCode,并修改系统界面和编辑面板字体大小
  17. IBM WebSphere Application Server与IBM Java V8官方帮助文档资源汇总
  18. 双面打印无效选择了文件服务器,使用高级选项打印(纸盘选择,双面打印,装订)...
  19. 5G NR标准 第13章 重传协议
  20. [附源码]java毕业设计游戏装备交易网站论文2022

热门文章

  1. ●POJ 1228 Grandpas Estate
  2. Emacs中自动刷新dired缓冲区
  3. 最近啃的有点多了,乱了
  4. asterisk queue 队列
  5. 智能优化算法应用:基于GWO优化的二维最大熵图像阈值分割 - 附代码
  6. linux普通用户配置自己的python环境
  7. 【Tensorflow】下载预训练模型和参数小结
  8. 数据结构:实验三 二叉树操作实现
  9. Apache访问localhost页面403Forbidden
  10. redis主从架构宕机问题解决方法