今天被问到这个问题,被问当时毫无头绪,只非常抽象的回答了一些可能的网络问题。感觉当时的回答非常不好,下班之后就继续思考这个问题的答案。思考的问题的过程中突然想到最近才了解到的jquery.deferred,jquery.deferred对ajax请求的结果主要会进行两种情况
今天被问到这个问题,被问当时毫无头绪,只非常抽象的回答了一些可能的网络问题。感觉当时的回答非常不好,下班之后就继续思考这个问题的答案。思考的问题的过程中突然想到最近才了解到的jquery.deferred,jquery.deferred对ajax请求的结果主要会进行两种情况的处理,done和fail.想到这里,突然脑海中灵光一闪:原来这个问题考的是http状态码。到了这一步,标题中的答案突然明朗了。
接下来只要确定在所有的http状态码里面哪些是表示成功,哪些是表示失败,就可以完全解答这个问题。
网络上的一些文档里面有http状态码的描述,但是没有明确说明成功和失败,这里,我们通过代码进行一下检测。
服务器端代码http.php用来返回指定的状态吗
<?php /** * Created by PhpStorm. * User: bandit * Date: 13/12/2014 * Time: 12:09 */ http_response_code($_REQUEST['code']);
通过同步的ajax请求获取成功和失败的状态码
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="http://blog.icodeu.com/"http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
<script type="application/javascript">
var codes = [100,101,102,200,201,202,203,204,205,206,207,300,301,302,303,304,305,306,307,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,424,425,426,449,500,501,502,503,504,505,506,507,509,510];
var suc = [];
var fail = [];
$.ajaxSetup({async:false});
for(var i in codes){
$.ajax({
type: "POST",
url: "http.php",
data: {"code":codes[i]}
})
.done(function(){ suc.push(codes[i]);})
.fail(function(){ fail.push(codes[i]);})
}
console.log(suc.toString());
console.log("'-------------------------------------------');
console.log(fail.toString());
</script>
</body>
</html>
通过chrome console里面返回的内容,我们就可以知道你哪些是成功的哪些是失败的。
200,201,202,203,204,205,206,207,304 VM2169:15
——————————————-
100,101,102,300,301,302,303,305,306,307,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,424,425,426,449,500,501,502,503,504,505,506,507,509,510
简单来说200范围以及304的状态码都是表示成功的,其他均表示失败。关于状态码的描述则就是我们这篇文章的答案。
关于状态码的更详细信息请参考维基百科
原文地址:http请求失败有哪些原因, 感谢原作者分享。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号