• ajax中的timeout设置


    jquery的$.ajax()中,有一个timeout的属性,用来设置超时时间,使用complete判断TextStatus的值是否为timeout,执行相应的操作。

    代码如下:

    $.ajax({
      url: 'ajax.php',
      type: 'post',
      data: postData,
      timeout: 8000,//设置超时时间为8s
      success: function(data){
        console.log(data)
      },
      complete:function(XHR,TextStatus){
        if(TextStatus=='timeout'){ //超时执行的程序
          console.log("请求超时!");
        }
      }
    })
    

    问题

    ajax中async属性的默认值为true,即异步状态,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。
    若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
    这时,timeout属性失效,页面会在请求同步ajax的时候进入假死状态,直到请求有返回结果。

    目前解决方案:避开同步ajax,使用异步代替。

  • 相关阅读:
    Linux内存管理2---段机制
    XCOJ 1102 (树形DP+背包)
    ZOJ 3805 (树形DP)
    Ural 1018 (树形DP+背包+优化)
    POJ 2342 (树形DP)
    HDU 2612 (BFS搜索+多终点)
    POJ 1947 (树形DP+背包)
    HDU 1561 (树形DP+背包)
    HDU 1045 (DFS搜索)
    HDU 5067 (状态压缩DP+TSP)
  • 原文地址:https://www.cnblogs.com/ZerlinM/p/13819338.html
Copyright © 2020-2023  润新知