表單提交帶對象和不帶對象的區別

若是表單數據中沒有對象的話,返回給後臺的數據結果以下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

相關文章
相關標籤/搜索