在我們日常開發中,使用jquery進行ajax請求是很常見的。但是在某些情況下,我們可能會遇到本地無法訪問的問題,這時候該怎么辦呢?
首先,我們需要了解的是跨域問題,因為瀏覽器因為安全原因,不允許js跨域請求數據。
那么為什么本地會出現無法訪問的情況呢?通常是因為我們的請求地址是一個本地文件路徑,而不是一個真正的地址,比如:
$.ajax({ url: 'file:///C:/Users/Administrator/Desktop/data.json', type: 'GET', dataType: 'json', success: function(data){ console.log(data); }, error: function(xhr, errorType, error){ console.log(error); } });
這種情況下會出現以下錯誤:
XMLHttpRequest cannot load file:///C:/Users/Administrator/Desktop/data.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
這個錯誤提示告訴我們,跨域請求只支持http、data、chrome等協議。而我們的請求地址是file協議,因此導致了無法訪問的問題。
那么如何解決這個問題呢?我們可以在本地建立一個本地服務器,然后將請求路徑改為localhost訪問本地服務器的地址,比如:
$.ajax({ url: 'http://localhost:8080/data.json', type: 'GET', dataType: 'json', success: function(data){ console.log(data); }, error: function(xhr, errorType, error){ console.log(error); } });
這樣請求就變成了向localhost發送請求,而不是直接訪問本地文件路徑,解決了跨域請求的問題。