请问使用get时为啥没有报错呢

请问使用get时为啥没有报错呢

<!DOCTYPE html>

<html>

<head>

<title>ajax</title>

</head>

<body>

<script type="text/javascript">

//封装通用的xhr对象,兼容各个版本

function createXHR(){

//判断浏览器是否将XMLHttpRequest作为本地对象实现,针对IE7,firefox,opera等

if(typeof XMLHttpRequest!="undefined"){

return new XMLHttpRequest();

//接下来判断老版本浏览器(判断的是AXO)

}else if(typeof ActiveXObject!="undefined"){

//将所有可能出现的ActiveXObject版本放到一个数组里面

var xhrArr=['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.2.0'];

//(老版本有多个),遍历创建XMLHttpRequest对象

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.');

}

}

//XMLHttpRequest对象

var xhr=createXHR();

//响应XMLHttpRequest对象…状态…变化的函数,onreadystatechange在readyState属性发生改变时触发

xhr.onreadystatechange=function(){

//异步调用成功执行(包括检测是否调用成功)

if(xhr.readyState===4){

if((xhr.status>=200&&xhr.status<300)||xhr.status===304){

console.log(xhr.responseText);

}


}

}



//创建请求

xhr.open("get","./server/slider.json",true);

xhr.send(null);

// xhr.open("post","./server/slider.json",true);

// xhr.send({user:"zhangsan",id:6});

// xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

console.log(xhr);

</script>

</body>

</html>


//使用get时没有404报错呀?

相关截图:

http://img1.sycdn.imooc.com//climg/6044442c098adaac13540738.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,能够自己发现问题并解决问题,很棒。但是这里有一点需要说明,老师使用同学的代码测试(post请求方式),测试结果如下图所示:

http://img1.sycdn.imooc.com//climg/60444b5f09d29bba18930591.jpg

返回状态码为405,这个是因为使用post请求并且发送的URL是一个具体的资源时,例如JSON文件, 网站解析的时候会把整个URL当作域名解析,也就是说并没有传参数给服务端,而是直接访问服务端的具体资源,所以访问静态资源要用get请求。

祝学习愉快!

  • Golden几何 提问者 #1

    http://img1.sycdn.imooc.com//climg/60448184090fe5dc12220866.jpg

    老师,原代码测试statusCode是200?还有为什么静态网页使用post不能传参呢?

    2021-03-07 15:36:18
  • 卡布琦诺 回复 提问者 Golden几何 #2

    同学你好,源代码测试statusCode是200,是因为使用的是get请求,如果是post请求,statusCode是405,不理解同学说的静态网页使用post请求不能传参是什么意思,上面老师说的是使用post请求静态资源不会传参,这个是post请求的特质。

    祝学习愉快!

    2021-03-07 16:25:53
  • Golden几何 提问者 回复 卡布琦诺 #3

    哦说错了,创建请求的代码是

    xhr.open("post","./server/slider.json",true);

    //最好放open后面

    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    xhr.send({user:"zhangsan",id:6});

    可是我测了它的statusCode是200哦~


    2021-03-07 16:37:37
提问者 Golden几何 2021-03-07 11:22:33

哦哦,slider测试时忘加s了,应该是sliders路径404。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师