鍍金池/ 問答/HTML/ axios 參數(shù)如何將[]非法字符進(jìn)行轉(zhuǎn)換?

axios 參數(shù)如何將[]非法字符進(jìn)行轉(zhuǎn)換?

后臺(tái)那邊參數(shù)需要把[]字符進(jìn)行轉(zhuǎn)換才可以訪問, [轉(zhuǎn)換成%5B, ]轉(zhuǎn)換成%5D

沒有轉(zhuǎn)換前

methods: {
    logicQueryData() {
        let str = JSON.stringify(this.taskArr);
        let paramsData = {
                table: this.value,
                andOr: this.queryOne,
                params: str
          };
       // 打印請(qǐng)求參數(shù)
       console.log('paramsData', paramsData);
    }
    this.$http
          .get(this.$api.logicalSearch + "logic", {
            params: paramsData
          })
          .then(res => {
              
          }
}

clipboard.png

clipboard.png

轉(zhuǎn)換后

let str = JSON.stringify(this.taskArr);
let str1 = str.replace("[", "%5B");
let str2 = str1.replace("]", "%5D");
let paramsData = {
            table: this.value,
            andOr: this.queryOne,
            params: str2
      };
    this.$http
          .get(this.$api.logicalSearch + "logic", {
            params: paramsData
          })
          .then(res => {
              
          }      

clipboard.png

回答
編輯回答
礙你眼

你把encode的操作放在最后面試試。

  var param = [
    {"a":1},
    {"a":2}
  ]
  var paramStr = JSON.stringify(param);
  var url  = "http://www.baidu.com";
  url += '?param='+encodeURIComponent(paramStr)
2018年5月18日 19:52
編輯回答
不二心

引入qs去處理get的params, 注意table先用JSON.stringify處理

    const qs = require('qs')
    let param = {
      table: JSON.stringify([{
        key: 'OGR_FID',
        logic: '=',
        value: 1
      }, {
        key: 'OGR_FIDddddd',
        logic: '=',
        value: 2
      }])
    }
    this.$http.get('/****', {
      params: param,
      paramsSerializer: function (params) {
        return qs.stringify(params, {arrayFormat: 'repeat'})
      }
    }).then((res) => {
    })
2018年3月21日 23:59
編輯回答
墨小羽

直接將param轉(zhuǎn)換成字符串拼接在url后面就可以了吧,不用params參數(shù)。

let param = encodeURIComponent(JSON.stringify([{ a:1;b:2}])),
    url = `${host}${param}`
  
this.$http.get(url )
         
2018年8月25日 21:13
編輯回答
莓森

第一步- 請(qǐng)求換成post
第二步- 轉(zhuǎn)為字符串

2017年4月11日 06:22
編輯回答
刮刮樂

這段是axios對(duì)params默認(rèn)的編碼 又把%5B轉(zhuǎn)回[

function encode(val) {
      return encodeURIComponent(val).
        replace(/%40/gi, '@').
        replace(/%3A/gi, ':').
        replace(/%24/g, '$').
        replace(/%2C/gi, ',').
        replace(/%20/g, '+').
        replace(/%5B/gi, '[').
        replace(/%5D/gi, ']');
    }
2018年3月20日 10:16