我想从计算机上的本地文件加载JSON文件,并且我已经下载并启动了Node.js。但它始终显示此消息“加载失败...仅支持跨源请求...。”
F12也向我们显示了文件ourRequest.send();
这是我的代码...
var btn=document.getElementById("btn");
var tajweedContainer=document.getElementById("rule_info");
btn.addEventListener("click",function(){
var ourRequest= new XMLHttpRequest();
ourRequest.open('GET','testjson.json');
ourRequest.onload=function(){
var ourData=JSON.parse(ourRequest.responseText);
renderHtml(ourData);
}
ourRequest.send();
});
function renderHtml(data){
var htmlString="";
for(var i=0;i<data.length;i++){
htmlString="<p>"+data[i].surah+data[i].ayah+"the grammar ";
for(var ii=0;ii<data[i].annotations;ii++){
htmlString+=data[i].annotations.end[ii]+data[i].annotations.rule[ii]+data[i].annotations.start[ii]
}
htmlString+=".</p>";
tajweedContainer.insertAdjacentHTML('beforeend',htmlString)
}
};
答案 0 :(得分:0)
您无法向本地资源发出HttpRequest。
您需要在本地主机服务器中提供此json文件。
例如,您的testjson.json
应该可以通过http://localhost/testjson.json
访问,然后向该端点发出HTTP请求
此代码在我这里可以正常使用,renderHtml()中的console.log(data);
返回testjson.json
<button id="btn">Render</button>
<div id="rule_info"></div>
<script>
var btn = document.getElementById("btn");
var tajweedContainer=document.getElementById("rule_info");
btn.addEventListener("click",function(){
var ourRequest= new XMLHttpRequest();
ourRequest.open('GET','http://localhost/testjson.json');
ourRequest.onload=function(){
var ourData=JSON.parse(ourRequest.responseText);
renderHtml(ourData);
}
ourRequest.send();
});
function renderHtml(data){
console.log(data);
var htmlString="";
for(var i=0;i<data.length;i++){
htmlString="<p>"+data[i].surah+data[i].ayah+"the grammar ";
for(var ii=0;ii<data[i].annotations;ii++){
htmlString+=data[i].annotations.end[ii]+data[i].annotations.rule[ii]+data[i].annotations.start[ii]
}
htmlString+=".</p>";
tajweedContainer.insertAdjacentHTML('beforeend',htmlString)
}
};
</script>