node.js中的querystring.parse方法使用说明


Posted in Javascript onDecember 10, 2014

方法说明:

将字符串转成对象。说白了其实就是把url上带的参数串转成数组对象。(看例子就知道咯)

语法:

querystring.parse(str, [sep], [eq], [options])

接收参数:

str                                         欲转换的字符串

sep                                       设置分隔符,默认为 ‘&'

eq                                         设置赋值符,默认为 ‘='

[options]  maxKeys             可接受字符串的最大长度,默认为1000

例子:

querystring.parse('foo=bar&baz=qux&baz=quux&corge')

// returns

{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

源码:

// Parse a key=val string.

QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {

  sep = sep || '&';

  eq = eq || '=';

  var obj = {};

  if (!util.isString(qs) || qs.length === 0) {

    return obj;

  }

  var regexp = /\+/g;

  qs = qs.split(sep);

  var maxKeys = 1000;

  if (options && util.isNumber(options.maxKeys)) {

    maxKeys = options.maxKeys;

  }

  var len = qs.length;

  // maxKeys <= 0 means that we should not limit keys count

  if (maxKeys > 0 && len > maxKeys) {

    len = maxKeys;

  }

  for (var i = 0; i < len; ++i) {

    var x = qs[i].replace(regexp, '%20'),

        idx = x.indexOf(eq),

        kstr, vstr, k, v;

    if (idx >= 0) {

      kstr = x.substr(0, idx);

      vstr = x.substr(idx + 1);

    } else {

      kstr = x;

      vstr = '';

    }

    try {

      k = decodeURIComponent(kstr);

      v = decodeURIComponent(vstr);

    } catch (e) {

      k = QueryString.unescape(kstr, true);

      v = QueryString.unescape(vstr, true);

    }

    if (!hasOwnProperty(obj, k)) {

      obj[k] = v;

    } else if (util.isArray(obj[k])) {

      obj[k].push(v);

    } else {

      obj[k] = [obj[k], v];

    }

  }

  return obj;

};
Javascript 相关文章推荐
一个用js实现的页内搜索代码
May 23 Javascript
javascript ajax的5种状态介绍
Aug 18 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
Vue.js实现移动端短信验证码功能
Mar 29 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
Nov 25 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
node.js中的url.resolve方法使用说明
Dec 10 #Javascript
node.js中的url.parse方法使用说明
Dec 10 #Javascript
node.js中的url.format方法使用说明
Dec 10 #Javascript
node.js中的console.assert方法使用说明
Dec 10 #Javascript
深入分析JSONP跨域的原理
Dec 10 #Javascript
node.js中的console.dir方法使用说明
Dec 10 #Javascript
node.js中的console.error方法使用说明
Dec 10 #Javascript
You might like
新52大事件
2020/03/03 欧美动漫
用PHP读注册表
2006/10/09 PHP
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
浅谈js中的this问题
2017/08/31 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
python获取本机外网ip的方法
2015/04/15 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python保存文件方法小结
2018/07/27 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
对Python _取log的几种方式小结
2019/07/25 Python
计算机开发个人求职信范文
2013/09/26 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
校园安全演讲稿
2014/05/09 职场文书
担保书范本
2015/01/20 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
mysql幻读详解实例以及解决办法
2022/06/16 MySQL