我想从我的计算机中的本地文件加载JSON文件,我已经下载了Node.js并启动了它。但它一直显示此消息“无法加载......只支持交叉原始请求....”
还有F12向我展示了文件inRequest.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)
}
};
您无法将HttpRequest用于本地资源。
您需要在localhost服务器中提供此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>