• ajax 会遇到的问题总结


    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是否存在,存在才执行回调函数
     
    应该还有其他的方案以后再增加  
  • 相关阅读:
    PrimeNG之Validation
    PrimeNG之FileUpload
    PrimeNG之DataTable
    PrimeNG之TreeTable
    AngularJS实现可伸缩的页面切换
    ng2-table
    【转】前端框架天下三分:Angular React 和 Vue的比较
    【转】AngularJS动态生成div的ID
    Emprie 使用基础笔记
    开源沙箱CuckooSandbox 介绍与部署
  • 原文地址:https://www.cnblogs.com/yangjingjing/p/5232412.html
Copyright © 2020-2023  润新知