1,瀑布流的bug
- 多次滚动,请求多次,
解决:加一个开关变量,当数据返回之后才会执行下一次ajax请求,并设置超时时间
- 中途数据库有变更,造成数据库id变化,(本来的20变成21)请求就会返回一个重复数据
解决:每次请求把数据的不变的那个id传给后台,后台根据这个不变的id 取数据
- 当数据量超级大的时候,浏览器会崩溃
可以把之前请求到的数据从浏览器清空。
2,ajax轮询
每隔五秒发一次请求到服务器,本来一切正常,但是遇到网络不好的情况,连发几次请求,会被卡主,一股脑返回几次重复数据
暂时的解决方案1
判断如果数据一样就不执行相应的操作
或者设置ajax超时
用jq的jQuery.ajaxPrefilter()ajax预处理方法
options
是请求的选项originalOptions
值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings
设置中的默认值jqXHR
是请求的jqXHR对象
当自定义选项,需要提前处理,预过滤器(Prefilters)是一个完美的选择。给定下面的代码, 例如,如果自定义
abortOnRetry
选项被设置为true
,那么调用$.ajax()
会自动中止请求相同的URL:var currentRequests = {};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.abortOnRetry ) {
if ( currentRequests[ options.url ] ) {
currentRequests[ options.url ].abort();
}
currentRequests[ options.url ] = jqXHR;
}
});
currentRequests.abort();方法取消的时候,实际上会触发$.ajax success事件,所以在success是的回调函数需要添加判断current_request是否存在,存在才执行回调函数
应该还有其他的方案以后再增加