Vue中axios踩坑之路-POST傳參

剛開始使用Vue,裏面的坑是一個接一個,今天就遇到一個axios POST傳參的問題,我須要在請求中傳遞參數,而後按官方文檔的格式開始操做,代碼以下:ios

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
注:此處是官方示例:點擊打開連接
打開控制檯,報400,報錯信息是:傳遞的參數不存在,但在請求中看的到參數,只是參數的格式是Request Payload,具體也沒看懂是什麼,總之知道就是參數格式不對,查閱資料找到兩種解決辦法,代碼以下:git

1.github


var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
2.npm

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
參考:https://github.com/axios/axios#using-applicationx-www-form-urlencoded-format
經測試,這兩種辦法均可以axios

這個問題剛解決,後臺就拋給我一個問題,個人參數裏面要傳數組呢,我覺得直接按上面的作法就能一馬平川了,然而現實是殘酷的,崩盤!查看官方文檔發現,其實這個的解決也是很是的簡單,只須要在qs的方法中設置它的indices爲false便可,如:數組

qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });app

更多qs功能參考:https://www.npmjs.com/package/qs
 post

相關文章
相關標籤/搜索