在前端開發中,經常需要使用Ajax向服務器請求數據。而近年來流行起來的axios則是一款強大的Ajax庫,它可以用來執行HTTP請求,包括Post、Get、Put、Delete等。在使用axios時,我們可能會遇到請求本地json時執行catch的情況。這時候應該如何解決呢?
axios.get('data.json') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); })
如上所示的代碼,假設我們需要請求本地的data.json文件,那么如果請求失敗,就會執行catch中的代碼。但是我們發現,有時候即使文件存在,請求仍會執行catch而不是then中的代碼。這是為什么呢?
其實,這是因為axios默認情況下請求的是跨域資源。而對于本地資源來說,跨域是不存在的。因此,在使用axios請求本地json時,需要將請求地址變成相對地址,或者在請求地址前加上“/”,如下所示:
axios.get('./data.json') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); })
或者:
axios.get('/data.json') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); })
這樣,就可以解決請求本地json時執行catch的問題了。
上一篇js代碼如何導入到vue
下一篇mysql變量打印