异步请求ajax,及get与post区别

 

1.创建xhr对象
var xhr = null;
解决兼容问题
if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();   其它浏览器
}else{    兼容ie6及以下
    xhr = new ActiveXObject("Microsoft.XMLHttpRequest");
}
创建XMLHttpRequest对象
在JS里,window是最顶级对象(除了Object,Function...那些之外),它代表了一个窗体。而window.XMLHttpRequest代表的是window的一个属性。这个是用来区分浏览器的,因为在firefox,opera,safiar,IE7.0,IE8.0(我所知道的window对象有这个属性的浏览器)这些浏览器中,window是有XMLHttpRequest这个属性的,而IE6.0,5.5都是没有的,IE6.0或5.5是没有这个属性的,使用window.ActiveXObject替代。当然前者和后者的XMLHttpRequest对象生成方式也是不一样的
2.绑定事件监听函数    同步时可以不要绑定,不推荐使用同步
xhr.onreadystatechange = function(){    
    if(xhr.readyState === 4){    4.表示消息接收完成,且响应就绪
        if(xhr.status === 200){    200.表示响应成功
            console.log("XHR响应的数据为"+xhr.responseText);
        }esle{
            console.log("接收到一个非成功的ajax响应"+xhr.status);
        }
    }
}

onreadystatechange 

存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数

readyState  存有 XMLHttpRequest 的状态。从 0 到 4 发生变化

0 请求未初始化

1 服务器连接已建立

2 服务器已接收

3 请求处理中

4 请求已完成,且响应已就绪

status  响应状态码(最下面有对照表)

1xx 信息类错误

2xx 表示成功 200

3xx 重定向 304

4xx 客户端错误 404

5xx 服务端错误

这个status属性描述了HTTP状态代码,仅当readyState值为3(正在接收中)或4(已加载)时,这个status属性才可用。当readyState的值小于3时试图存取status的值将引发一个异常。

xhr.responseText      获得响应数据

GET请求时
3.建立连接
xhr.open("GET",url+需要传递的信息,如("?uname=张三&age=16"),true)     true 异步请求 默认参数,可不写

4.发送请求
xhr.send()
POST请求时
3.建立连接
xhr.open("POST",url,true)
在使用post发送请求之前,必须添加请求头   
4.设置请求头
// xhr.setRequestHeader("Content-type","application/json; charset=utf-8");   json
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");   表单数据
// xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8"); 纯文本
// xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");  HTML

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");    常用的

5.发送请求
xhr.send(发送的信息)
方法描述
open(method,url,async)

规定请求的类型、URL 以及是否异步处理请求。

  • method:请求的类型;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)
send(string)

将请求发送到服务器。

  • string:仅用于 POST 请求

HTTP的8种请求方式

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。

GET请求和POST请求的区别

简单点:

get信息显示在地址栏,安全性比post低;

get单次发送的信息有限制在2000字符左右,post没有限制

get只能进行url编码,而POST支持多种编码方式。

https://www.cnblogs.com/logsharing/p/8448446.html  (推荐一篇介绍get与post区别的博客)

 

Ajax status和statusText状态对照表

statusstatusText说明
0**-未被始化
1**-请求收到,继续处理
100Continue客户必须继续发出请求
101Switching protocols客户要求服务器根据请求转换HTTP协议版本
2**-操作成功收到,分析、接受
200OK交易成功
201Created提示知道新文件的URL
202Accepted接受和处理、但处理未完成
203Non-Authoritative Information返回信息不确定或不完整
204No Content请求收到,但返回信息为空
205Reset Content服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206Partial Content服务器已经完成了部分用户的GET请求
3**-完成此请求必须进一步处理
300Multiple Choices请求的资源可在多处得到
301Moved Permanently删除请求数据
302Found在其他地址发现了请求数据
303See Other建议客户访问其他URL或访问方式
304Not Modified客户端已经执行了GET,但文件未变化
305Use Proxy请求的资源必须从服务器指定的地址得到
306 前一版本HTTP中使用的代码,现行版本中不再使用
307Temporary Redirect申明请求的资源临时性删除
4**-请求包含一个错误语法或不能完成
400Bad Request错误请求,如语法错误
401Unauthorized请求授权失败
402Payment Required保留有效ChargeTo头响应
403Forbidden请求不允许(由于服务器上文件或目录的权限设置导致资源不可用)
404Not Found没有发现文件、查询或URl(没有找到指定的资源)
405Method Not Allowed用户在Request-Line字段定义的方法不允许
406Not Acceptable根据用户发送的Accept拖,请求资源不可访问
407Proxy Authentication Required类似401,用户必须首先在代理服务器上得到授权
408Request Timeout客户端没有在用户指定的饿时间内完成请求
409Conflict对当前资源状态,请求不能完成
410Gone服务器上不再有此资源且无进一步的参考地址
411Length Required服务器拒绝用户定义的Content-Length属性请求
412Precondition Failed一个或多个请求头字段在当前请求中错误
413Request Entity Too Large请求的资源大于服务器允许的大小
414Request-URI Too Long请求的资源URL长于服务器允许的长度
415Unsupported Media Type请求资源不支持请求项目格式
416Requested Range Not Suitable请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417Expectation Failed服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
5**-服务器执行一个完全有效请求失败
500Internal Server Error服务器产生内部错误
501Not Implemented服务器不支持请求的函数
502Bad Gateway服务器暂时不可用,有时是为了防止发生系统过载
503Service Unavailable服务器过载或暂停维修
504Gateway Timeout关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505HTTP Version Not Supported服务器不支持或拒绝支请求头中指定的HTTP版本
12029an unknown error occurred while processing the request on the server. the status code returned from the server was : 12029原因:网络不通. 刷新一下就知道了
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值