1. 自定义 Ajax原生编写
    ajax:function(opt){
    var xmlhttp;
    //创建对象
    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }else{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  2.  
  3. //请求类型 默认post
    opt.type = opt.type ? opt.type.toUpperCase() : '';
    var reqType = opt.type === 'GET' ? 'GET' : 'POST';
  4.  
  5. /*
    *防止使用时直接加了尾参 需要解析 ? 拼接参数 并区别get和post
    *get 需要将参数全部拼接在url后; post将参数全部拼接在seng方法里
    *get获取时防止缓存 添加随机数
    */
    if(!opt.url){
    throw new Error("please input url");
    }
    var getUrlArr = opt.url.split('?');
    //请求地址一定是第一个
    var setUrl = getUrlArr[0];
    var setArguments = '';
    //个数超过2 解析 arguments
    if(getUrlArr.length > 1){
    for(var i = 1; i< getUrlArr.length; i++ ){
    setArguments += '&'+getUrlArr[i];
    }
    }
    var userData = opt.data ? opt.data : '';
    var userArguments = '';
    if(userData){
    for (var x in userData){
    userArguments += '&'+x+'='+userData[x];
    }
    }
    //拼接 url之后的和data里的参数
    setArguments += userArguments;
    //状态监测
    xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState == 4 ){
    if(xmlhttp.status == 200){
    try {
    opt.success(JSON.parse(xmlhttp.responseText));
    }catch(e){
    opt.success(xmlhttp.responseText);
    }
    }else{
    if(typeof opt.error == 'function'){
    opt.error(xmlhttp.status);
    }
    }
    }
    }
  6.  
  7. //默认异步 完整的后期编写
    if(reqType === 'GET'){
    xmlhttp.open(reqType,setUrl+'?t='+ Math.random()+setArguments,true);
    xmlhttp.send();
    }else{
    setArguments = setArguments ? setArguments.substring(1) : '';
    xmlhttp.open(reqType,setUrl,true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=utf-8");
    xmlhttp.send(setArguments);
    }
    return xmlhttp;
    }
  8.  
  1. xmlhttp.readyState
    0 请求未初始化(还没有调用 open()
    1 请求已经建立,但是还没有发送(还没有调用 send()
    2 请求已发送,正在处理中(通常现在可以从响应中获取内容头)
    3 请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
    4 响应已完成;您可以获取并使用服务器的响应了。
  1. xmlhttp.status
  1. 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
  2. 301 永久重定向,新的永久性的 URI 应当在响应的 Location 域中返回,浏览器会根据这个新的URI去请求.
    如果这不是一个 GET 或者 HEAD 请求,浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。
    注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。
  3. 302 请求的资源现在临时从不同的 URI 响应请求,常作为临时域名更替时的重定向,新的临时性的 URI 应当在响应的 Location 域中返回.
    除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。
    注意:虽然RFC 1945RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,
    并且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。
    状态码303307被添加了进来,用以明确服务器期待客户端进行何种反应。
    PS 一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理,(302 重定向和网址劫持)
    302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,
    罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。因为302重定向经常被用于做url劫持,黑帽seo技术中,
    而且百度在处理302重定向技术还不成熟,经常将它纳入到黑帽seo的范畴中,而google对这方面识别处理就完善了许多。
    所以302重定向在现阶段的搜索引擎技术中,还是容易导致网站降权的,尽量不用。但从seo、网站优化方面来说是弊大于利。
  4. 304 客户端向服务器发送了请求,服务器如果通过发送的请求头信息进行资源对比,如果资源没有发生变化,则让浏览器继续使用上次
    发送的资源,浏览器会缓存上次的资源,这时候状态码304就是告诉浏览器读缓存,如果资源更新,服务器就会返回200,返回新的资源,
    浏览器接受到之后也会更新本地的资源时间戳,下次请求时会发送新的请求头。
  5. 400 客户端请求有误
  6. 403 服务器已经理解请求,但是拒绝执行它。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,
    那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。
  7. 404 请求失败,请求所希望得到的资源未被在服务器上发现
  8. 500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
  9. 502 错误网关
  10. 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
    如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息,
    那么客户端应当以处理500响应的方式处理它。   
    注意:503状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。
  11. 504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTPFTPLDAP)或者辅助服务器(例如DNS)收到响应。   
    注意:某些代理服务器在DNS查询超时时会返回400或者500错误

http常见状态码解析的更多相关文章

  1. HTTP 常见状态码解析

    1XX 表示消息 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 5XX 表示服务器端错误 消息:请求已被接受,需要继续处理.由于 HTTP/1.0 协议中没有定义任何 1xx 状态码. ...

  2. HTTP协议—常见的HTTP响应状态码解析

    常见的HTTP响应状态码解析 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Client Error ...

  3. http常见状态码及其解析

    HTTP状态码常见状态码及其解析 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求 ...

  4. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  5. 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别

    HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...

  6. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  7. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  8. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  9. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

随机推荐

  1. tomcatPluginV321.zip

    下载地址:http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV321.zip 或者  http://files.cnblogs.com/fil ...

  2. 关于CAShapeLayer的一些实用案例和技巧【转】

    本文授权转载,作者:@景铭巴巴 一.使用CAShapeLayer实现复杂的View的遮罩效果 1.1.案例演示 最近在整理一个聊天的项目的时候,发送图片的时候,会有一个三角的指向效果,指向这张图片的发 ...

  3. 外部函数test显示的返回内部函数add的调用

    前段时间有个需求中有点击datagrid的单元格实现某种事件,皇冠现金代理调用datagrid的onclickCell这个方法很容易实现,但是体验不好啊,完全不知道自己刚才点击的是哪个单元格,然后就尝 ...

  4. java中分页效果的实现代码

    首先是将分页所需的一些个资源 ,抽象出一个javabean对象-PageBean: 先把需要分页的数据或是记录都查询出来 存入一个集合类里如List或是Vector, 然后利用其sublist(int ...

  5. 上传图片插件鼠标手cursor:pointer;不生效

    问题: 只在谷歌里失效; 解决: font-size:0; 参考: http://jingyan.baidu.com/article/48b558e32fabb67f38c09a81.html htt ...

  6. ios上的 button和input-button为什么不水平居中的

    在iphone6plus上的button中文本上不居中,如下图: 造成的原因,是button的padding不为零,造成的,因而设置padding: 0:就可以解决

  7. css3的新特性transform,transition,animation

    一.transform css3引入了一些可以对网页元素进行变换的属性,比如旋转,缩放,移动,或者沿着水平或者垂直方向扭曲(斜切变换)等等.这些的基础都是transform属性 transform属性 ...

  8. [总结] JDBC数据库操作

    1.加载驱动--告诉驱动管理将使用哪一个数据库的驱动包. class.forName("com.mysql.jdbc.Driver"); 2.操作JDBC ADI完成数据库动作 D ...

  9. android Dialog重绘

    String title = ""; if(itemInfo!=null) title = "\n\""+itemInfo.itemSSID+&quo ...

  10. Android仿“守望先锋”加载动画

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 效果图 实现思路 画一个小六边形 按效果图位置画七个小六边形 实现一个小六边形的显示与隐藏 ...