使用ajax异步请求时,如果后台数据库查询速度慢,会造成ajax请求成功的函数不执行,改成同步请求会解决这个问题,但是又达不到异步请求的效果,有什么解决方案?

解决方案 »

  1.   

    你没设置timeout之类的吧,自动abort掉ajax响应了Web开发学习资料推荐
    配置chrome支持本地(file协议)ajax请求
    ajax对象属性withCredentials
      

  2.   

    1异步的同时显示loading条,对不需要显示预估完成时间的情况采取的方式,但是体验上说,用户只知道在读,但不知道要多久
    2委托给线程,由线程汇报进度,前台js读取进度并显示,可以较精确的显示完成度,并能大概预估出完成时间,适合大批量逻辑处理使用,不适合单条sql占用大量时间的情况
    3优化sql,请转sql区
      

  3.   


    看我的例子,点击登录直接弹出error,都没等3秒
      

  4.   

    改成同步请求,就可以 alert(data)
      

  5.   

    不是说了,去掉timeout啊。。你自己都设置了3s了,超过3s的请求就会abort掉ajax请求触发error请求了同步请求timeout无效,所以不会自动终止ajax请求
      

  6.   


    我之前是没有加timeout的,我以为你让我加个timeout。 我去掉timeout一样执行error
      

  7.   

    自己控制台看ajax返回的信息是什么,还厚http状态吗
      

  8.   

    如果是必要加载的数据,那就必须async:false了。
    加载时间长,就用loading标识提示用户,让用户感觉到页面是在加载,加载的慢是网慢。千万不要卡死在那里不动了。
    sql在数据库上直接跑一下,对比一下事件。优化一下sql
      

  9.   

    控制台报304啊?那你看看这个http://blog.csdn.net/u011724770/article/details/54948748