您的位置:首页 > 其它

ajax 会遇到的问题总结

2016-03-01 20:28 281 查看
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是否存在,存在才执行回调函数

应该还有其他的方案以后再增加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: