Javascript 使用vanilla JS AJAX请求访问本地JSON文件时出现CORS错误?
我尝试使用一个普通的JS AJAX请求从本地存储的JSON文件中提取JSON字符串(特别是尝试不使用JQuery)——下面的代码是基于此编写的——但我在Chrome控制台中不断收到一个错误(见下文)。知道我哪里出错了吗?我已尝试更改xhr.open和.send请求的位置,但仍然收到错误消息。我怀疑问题在于.send()请求 Chrome中的控制台引发以下错误: “无法加载XMLHttpRequestfile:///C:/Users/brett/Desktop/SightingsDB/js/species.json. 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源。“Javascript 使用vanilla JS AJAX请求访问本地JSON文件时出现CORS错误?,javascript,ajax,json,Javascript,Ajax,Json,我尝试使用一个普通的JS AJAX请求从本地存储的JSON文件中提取JSON字符串(特别是尝试不使用JQuery)——下面的代码是基于此编写的——但我在Chrome控制台中不断收到一个错误(见下文)。知道我哪里出错了吗?我已尝试更改xhr.open和.send请求的位置,但仍然收到错误消息。我怀疑问题在于.send()请求 Chrome中的控制台引发以下错误: “无法加载XMLHttpRequestfile:///C:/Users/brett/Desktop/SightingsDB/js/spe
非常感谢您提供的任何见解。尝试在本地服务器(如apache或wamp)上运行应用程序,这样您就不会遇到任何问题基本上就像下面Felix、error msg等所说的那样-根本无法对本地文件运行AJAX请求
谢谢。这是一个关于安全性的问题,请尝试在本地主机服务器或Live中运行它。错误消息有什么不清楚的地方?它清楚地表明,
文件
协议不支持CORS。现代浏览器将每个文件://
URL视为一个不同的域。显然,您直接从文件系统运行脚本,而不是从HTTP服务器运行脚本。(正如@Özgür Ersil所建议的)您不能向本地文件系统发出Ajax请求。
//Vanilla JS AJAX request to get species from JSON file & populate Select box
function getJSON(path,callback) {
var xhr = new XMLHttpRequest(); //Instantiate new request
xhr.open('GET', path ,true); //prepare asynch GET request
xhr.send(); //send request
xhr.onreadystatechange = function(){ //everytime ready state changes (0-4), check it
if (xhr.readyState === 4) { //if request finished & response ready (4)
if (xhr.status === 0 || xhr.status === 200) { //then if status OK (local file || server)
var data = JSON.parse(xhr.responseText); //parse the returned JSON string
if (callback) {callback(data);} //if specified, run callback on data returned
}
}
};
}
//-----------------------------------------------------------------------------
//Test execute above function with callback
getJSON('js/species.json', function(data){
console.log(data);
});