注:以下状态码大部分都是自己项目中遇到的,现记录方便日后查看。
通常前后端使用ajax交互时,客户端向服务器发送请求时,然后服务器向我们返回状态码。 状态码就是告诉我们服务器响应的状态 ,由3位数字组成,其中第一位数字表示响应类别,响应类别从1到5分为五种 。
表示请求被服务器正常处理 ,最常见的就是这个
表示请求已成功处理,但是没有内容返回
也就是返回的响应报文中没有报文实体
一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况
永久重定向,表示请求的资源已经永久的搬到了其他位置 ,资源已经被分配了新的URI
临时重定向,表示请求的资源临时搬到了其他位置 ,请求的资源暂时被配到到了新的URI,和301很像,只不过资源是临时移动
表示请求资源存在另一个URI,应使用GET定向获取请求资源
303功能与302一样,区别只是303明确客户端应该使用GET访问
表示客户端自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
304通常在IE浏览器下多次请求同一个地址出现的。
场景:删除表格其中一条数据后重新请求列表数据渲染表格,第二次请求时状态码是304导致被删除的数据还是出现在前端。
原因:IE浏览器下同一地址的ajax请求优先读取本地缓存数据
解决方法:在请求地址后面加上时间戳,保证每次请求的地址都不一样,这样浏览器就无法读取缓存。
表示请求报文存在语法错误或参数错误,服务器不理解 ,需要修改请求内容后再次发送
表示发送的请求需要有HTTP认证信息或者是认证失败了
返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部以质询用户信息
表示对请求资源的访问被服务器拒绝了,通常是 没有权限或者跨域 。
表示服务器找不到请求的资源
表示请示方式不对,注意检查method,比如后端定义post请求方式而我们用了get,delete,put,path等方式均报错。
表示服务器执行请求的时候出错了。(后端的问题)
表示服务器超负载或正停机维护,无法处理请求
以上,如有错误欢迎指正,如果喜欢还请点个赞再走,谢谢!更多项目实战源码请移步我的 码云地址
在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的时候总是使用IE缓存
什么是Ajax缓存原理?
Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览器就不会与服务器交互。
Ajax缓存的好处
这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。
Ajax缓存的不足
Ajax缓存虽然有上述的好处,但是如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。
四、解决Ajax缓存问题的方法
解决这个问题最有效的办法是禁止页面缓存,有以下几种处理方法:
1、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”)
2、在服务端加 header(“Cache-Control: no-cache, must-revalidate”)
3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“If-Modified-Since”,”0″)
4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random()//当然这里参数 fresh 可以任意取了
5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime()
6、用POST替代GET:不推荐
7、 jQuery 提供一个防止ajax使用缓存的方法:
javascript" language=" JavaScript ">
$.ajaxSetup ({
cache: false //close AJAX cache
})
8、修改load 加载的url地址,如在url 多加个时间参数就可以:
function loadEventInfoPage(eventId){
$.ajaxSetup ({
cache: true // AJAX cache 下面加上时间后load的页面中的js、css图片等都会重新加载,
//加上这句action会重新加载,但是js、css、图片等会走缓存
})
$("#showEventInfo").load(ctx + "/custEvents/viewEvent.action", {"complaint.Id":eventId, "tt":(new Date()).getTime()},function(){})
}
9、设置html的缓存
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)