翻譯過來就是 沒法在window上執行fetch:使用get/head方法請求不能有bodyjson
錯誤代碼:src/api/index.jsapi
import Fetch from '../fetch/index' import jk from './jk' export default { verifycodeApi: params => Fetch(jk.verifycode, {method: 'get',body: params}) }
這裏的get方法中,接受參數用了body,因此報錯。app
解決方案:post
在封裝的fetch.js中fetch
const Fetch = (url, option = {}) => { // 格式化get請求的數據(fetch的get請求須要須要將參數拼接到url後面) if (option.method === 'get') { if (option.data) { url = url + formatUrl(option.data) } } // 對非get類請求頭和請求體作處理 if (option.method === 'post' || option.method === 'put' || option.method === 'delete') { option.headers['Content-Type'] = option.headers['Content-Type'] || 'application/json' option.body = qs.stringify(option.body) // option.body = JSON.stringify(option.body) } delete option.data }
重點是標橙色的代碼,這裏是爲了給get方法建立一個data的屬性,在拼接完url之後,最後用delete刪除這個data的屬性url
那麼,在src/api/index.jsspa
// api文件存放接口文件夾 import Fetch from '../fetch/index' import jk from './jk' export default { manageloginApi: params => Fetch(jk.managelogin, {method: 'post', body: params}), verifycodeApi: params => Fetch(jk.verifycode, {method: 'get', data: params}) }
就能夠用data屬性存放get傳過來的參數,避免了body傳參的報錯翻譯