基本概念
http协议的200,301,302,304,404,503这些常用的状态码就不再介绍了。这里主要说一下不常见的204和205吧。
204代表响应报文中包含若干首部和一个状态行,但是没有实体的主体内容。主要用于在浏览器不转为显示新文档的情况下,对其进行更新。
打个比方,如果一个表单提交后会跳到a.html,如果a.html的状态码是204,则页面就不会发生跳转,而是停留在当前页面。对于a标签而言,如果链接的响应码是204的话,页面也不会发生跳转。
使用场景:对于一些提交到服务器处理的数据,只需要返回是否成功的情况下,可以考虑用状态码204来作为返回信息,从而省略多余的数据传输。使用ajax时,当只需要知道响应成功或失败的情况,可以用204来代替200,件数多余的数据传输。
205则是告知浏览器清除当前页面中的所有html表单元素,也就是表单重置。
204的运用
我们首先使用ajax请求后台php,提交数据:
<script>
var result = '';
var xhr = new XMLHttpRequest();
xhr.open("get","./returnstatus.php?a=1&b=2",true);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200 || xhr.status == 204){
result = xhr.responseText;//status为204时,返回主体内容为空;为200时则正常返回
console.log(result);
}
}
xhr.send();
</script>
后台returnsstatus.php代码接受数据并返回:
<?php
$a = $_GET["a"];
$b = $_GET["b"];
header('HTTP/1.1 204 No Content');
//说明正常,只返回状态码即可
echo("123");//没有指定状态码为204时,是可以正常返回的。有了以后,不返回主体内容。
?>
如果这里不指定204状态码,则会默认以200状态码返回,并带上我们echo的“123”,但是如果我们设置了状态码为204,则响应报文的主体则会被忽略,从而减少不必要的数据传输,进一步提高性能。