我們?cè)谑褂肊charts圖表庫(kù)的過(guò)程中,經(jīng)常需要使用ajax請(qǐng)求數(shù)據(jù),將數(shù)據(jù)渲染到圖表中。但是有時(shí)候會(huì)遇到請(qǐng)求不到JSON文件的問(wèn)題,導(dǎo)致圖表無(wú)法渲染,出現(xiàn)空白。
這種情況下我們可以先檢查文件路徑是否正確,是否存在拼寫(xiě)錯(cuò)誤等問(wèn)題。如果路徑正確,可以通過(guò)F12開(kāi)發(fā)者工具查看請(qǐng)求響應(yīng)狀態(tài)碼,如果是404,則說(shuō)明文件請(qǐng)求失敗。此時(shí)我們需要檢查JSON文件是否存在,是否有讀取權(quán)限。
如果以上問(wèn)題都不存在,則有可能是跨域請(qǐng)求問(wèn)題。由于瀏覽器安全策略限制,不同域名之間的數(shù)據(jù)請(qǐng)求是不允許的。解決這個(gè)問(wèn)題需要在服務(wù)器端進(jìn)行跨域配置或者在前端使用JSONP方式進(jìn)行請(qǐng)求。
//跨域請(qǐng)求JSON $.ajax({ type: "get", async: false, url: "http://www.example.com/data.json", dataType: "jsonp", jsonp: "callback", success: function (json) { //渲染圖表 }, error: function () { console.log("請(qǐng)求JSON文件失敗"); } });
使用JSONP方式請(qǐng)求數(shù)據(jù)需要將dataType設(shè)置為jsonp,并且指定回調(diào)函數(shù)名。服務(wù)器返回的數(shù)據(jù)需要放在指定回調(diào)函數(shù)中,以使得瀏覽器能夠正確解析數(shù)據(jù)。
總結(jié)起來(lái),如果Echarts請(qǐng)求不到JSON文件,可能是路徑、文件存在性,跨域問(wèn)題等多種原因?qū)е?。需要認(rèn)真排查,找到具體的問(wèn)題進(jìn)行解決。