老师,有问题
来源:2-9 json(2)
Darkholme
2020-06-30 17:39:31
xhr.open("get","../server/slider.json",true);这串代码"../server/这一块我打两个点就没问题,打1个点报错404,打三个点报错403,是啥情况啊。就是这里../server,我的index.html是放在ajax文件夹内的,ajax文件夹放在www文件夹内。server文件夹也在www文件夹内,slider.json在server文件夹内。所有的内容都和视频里的一样。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
function createXHR(){
if(typeof XMLHttpRequest != 'undefined'){
return new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){
var xhrArr = ['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.2.0'];
var len = xhrArr.length, xhr;
for(var i=0;i<len;i++){
try{
xhr = new ActiveXObject(xhrArr[i]);
break;
}catch(ex){}
}
return xhr;
}else{
throw new Error('No XHR object available');
}
}
var xhr = createXHR(), data=null;
//Respond function in situation of XMLHttpRequest Object
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
data = eval("("+xhr.responseText+")");
console.log(data.slider);
}
}
}
// Create Request
xhr.open("get","../server/slider.json",true);
// Send Request
xhr.send(null);
</script>
</body>
</html>
1回答
同学你好,按照你的描述,项目目录结构如下:

由于请求是在html中发送的,所以请求的地址是相对于index.html的,三种路径差别如下:
“../server/slider.json”代表请求的文件是自己(即index.html)上一级目录的server文件中的slider.json文件,该路径刚好对应同学的文件结构,因此能请求成功。
“./server/slider.json”代表请求的是当前路径下的server文件夹中的slider.json文件,这个路径不对应同学的项目结构,无法找到slider.json,所以报404(资源未找到)。
而“…/server/ slider.json”这种写法是错的,所以报了403。
如果我的回答帮到了你,欢迎采纳,祝学习愉快!