表单提交带对象和不带对象的区别

若是表单数据中没有对象的话,返回给后台的数据结果以下node

后台能够设置 app.use(bodyParser.urlencoded({ extended: false }))bash

若是表单数据中有对象的话,返回给后台的数据结果以下app

后台能够设置 app.use(bodyParser.urlencoded({ extended: true }))ui

后台解析这两种数据格式的源码以下this

function parser (name) {
  var mod = parsers[name]

  if (mod !== undefined) {
    return mod.parse
  }

  // this uses a switch for static require analysis
  switch (name) {
    case 'qs':
      mod = require('qs') // extend: true
      break
    case 'querystring': // extend: false
      mod = require('querystring')
      break
  }

  // store to prevent invoking require()
  parsers[name] = mod

  return mod.parse
}

复制代码

若是表单数据不带对象格式的数据,使用 node 自带的 querystring 解析。 若是表单数据带对象格式的数据,使用第三方的 qs 解析,才能够保证解析成功,以下所示url

var withEmptyString = qs.parse('a[]=&a[]=b');
assert.deepEqual(withEmptyString, { a: ['', 'b'] });
 
var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c');
assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] });
复制代码

以为对你有帮助,点个赞可好呀~~spa

相关文章
相关标签/搜索