相关文章推荐
飘逸的萝卜  ·  SpringBoot 2.X 整合 ...·  1 年前    · 
直爽的黑框眼镜  ·  database - ...·  1 年前    · 
仗义的羽毛球  ·  php ...·  1 年前    · 
if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { var status = xmlHttp.status; if (status == 200) { var text = xmlHttp.responseText; console.log("Ajax send success "+text); } else { console.log("状态不正确,为: " + status); xmlHttp.open("GET", url, true); xmlHttp.timeout=500; xmlHttp.ontimeout=function(){ console.log("Ajax request timeout"); xmlHttp.setRequestHeader('content-type','application/x-www-form-urlencoded'); xmlHttp.send(null);

二、JQuery的Ajax写法

function request(url, data, success_callback,error_callback) { var xhr = $.ajax({ type: "POST", //提交数据的类型 POST GET url: url, //提交的网址 data: data, //提交的数据 timeout:10000, //设置超时的时间10s async:true, //请求方式 true异步请求(默认) false同步请求 //返回数据的格式 datatype: "json", //"xml", "html", "script", "json", "jsonp", "text". xhrFields: { withCredentials: true crossDomain: true, //在请求之前调用的函数 beforeSend: function () {}, //成功返回之后调用的函数 success: function (response) { success_callback(response); //调用执行后调用的函数,无论成功或失败都调用 complete: function (XMLHttpRequest, textStatus) { if(textStatus == 'timeout'){ if (error_callback != null && error_callback != "") { error_callback(); //调用出错执行的函数 error: function () { console.log("error"); //请求出错处理

三、XMLHTTP 的 readyState 值含义:

  • 0-未初始化,即尚未调用 open。
  • 1-初始化,即尚未调用 send。
  • 2-发送数据,即已经调用 send。
  • 3-数据传送中。
  • 4-完成。

四、响应错误代码

  • 400 无法解析此请求。
  • 403 禁止访问:访问被拒绝。
  • 404 找不到文件或目录。
  • 405 用于访问该页的 HTTP 动作未被许可。
  • 406 客户端浏览器不接受所请求页面的 MIME 类型。
  • 407 Web 服务器需要初始的代理验证。
  • 410 文件已删除。
  • 412 客户端设置的前提条件在 Web 服务器上评估时失败。
  • 414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
  • 500 服务器内部错误。
timeout : 1000, // 超时 时间 设置 ,单位毫秒   type : 'get', //请求方式,get或post   data :{}, //请求所传参数,json格式   dataType:'json',//返回的数据格式   success:fun... 最近在用EXtjs做项目,在加载数据量特别大的时候会出现加载 超时 现象,在FB下查看,原来是ext默认 ajax 请求30秒。 在网上搜到下面的解决方法,以备参考和其他人参考。 ExtJS做 Ajax 请求的时候,默认的相应 时间 是30秒,如果后来数据查询 时间 超过30秒,ExtJS就会报错。 这就需要修改ExtJS的 超时 时间 : 2种方法: 1:在 Ajax 请求的时候加:(timeout: 100000000)属性 代码如下: Ext. Ajax .request({ url: ‘foo.php’, success: someFn, failure: otherFn, timeout: 100000000,// 没发送之前是0,发送以后是1,onreadystatechange事件里面监控的是2,3,4这几个状态,readystate仅仅是针对请求的状态码,获取资源是否成功取决于status的状态。场景: AJAX 请求后,在成功的回调函数中给某一全局变量赋值,如果是异步请求,是不能赋值成功的,因为 AJAX 操作需要 时间 ,而外部程序执行比 AJAX 快,所以不会成功,但是异步可以,因为程序阻塞。async: 异步默认的async为true, AJAX 异步请求时,不影响页面的加载,用户操作以及 AJAX 程序后的程序执行。 使用bootstrapTable获取数据时,有时由于网络或者服务器的原因,无法及时获取到数据,页面显示一直处于等待状态。为了改善效果,考虑 设置 超时 ,请求发送后 超时 即显示无数据,过段 时间 重新发起请求。 实现上,bootstrapTable通过 ajax 获取数据,可以使用 ajax Options选项 设置 ajax 的一些属性。 bootstrapTable要 设置 timeout,首先要将async属性 设置 为true,在bootstrapTable中async默认是false的。例如 $(#event_table).bootstrapTable({ url: urlAddr, ajax Options 您要返回的有效状态码 https://timeout-as-a-service.herokuapp.com/<timeout>/<status> 请求完成后,您将获得一个JSON对象: " waitTime " : 1000 , " status " : 200 Heroku上的公共API: CORS支持 CORS允许Origin '*' ,因此您应该可以在任何地方使用它。 不,它不会反映其他地方的响应。 明显。 那太疯狂了。 缺省情况下,等待 时间 限制为90秒,除非您使用MAX_WAIT_TIME环境变量指定了不同的最大等待 时间 。 XMLHttpRequest示例 const timeout = 2000 , const st 测试 时间 :2019/02/26MacOS 环境下,timeout在各浏览器默认值为(以下浏览器都为当前 时间 最新版本)chrome 72.x 为4minsafari 12 为8minfirefox 65 貌似没有 超时 时间 测试代码Documentqueryconst ajax = (url = '/api/timeout') => {const xhr = new XMLHttpRequest(... 设置 时间 超过,断开请求连接 * ajax 接口---------------------------------------------------------------------------- * @param url 请求路径 * @param data 请求参数 * @param type 请求方式 * @param callbak 成功回调 假如XMLHttpRequest对象并没有成功呢?我们是不是应该也对这种情况加以处理,以便于让浏览者明白,哦,现在程序出问题了,而不是让浏览者一直的去等待数据的呈现,我想这样就能使得用户体验更好,虽然我们的请求因为种种原因失败,但是我们要能显示的在失败的第一 时间 告诉了浏览者,那么浏览者就不会一直再去等待数据的显示,或许他可以进行其他的操作,或者重新请求,这样岂不更人性化些~那么说了这么多,我们应该 我尝试在jQuery ajax 请求的成功函数页面刷新后显示引导模式。我认为发生的事情是,一旦页面刷新,setTimeout就会被擦掉,所以它永远不会被触发。我需要页面来刷新内容,但也希望为用户提供一个显示发生了什么的对话框。这是我的代码:$. ajax ({type: "POST",url: '@Url.Action("UpdateVideoUrl", "ManageVideos")',data: J... 初学者的我看起来似乎没问题,然而setTimeout每次都会执行多次,然后才根据服务器的expiresIn固定 时间 调用refresh接口。原因是因为, ajax 默认是异步执行的,而最开始的expiresIn还没有赋值,setTimeout就运行了,所以相当于 也怪不得执行很多次了。解决方法有两种,第一种加上同步代码块,等 ajax 执行完成再执行下面的功能,如下 然而这样会影响到别人的代码,等待token返回的时候无 会灵活的运用 ajax 的方法,非常重要,本文先给大家介绍 ajax 的几种方法,然后通过实例给大家分析详解,具体内容请看下文吧 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。 3.timeout: 要求为Number类型的参数, 设置 请求 超时 时间 (毫秒)。此 设置 将覆盖$. ajax Setup()方法的全局 设置 。 4.async: 要求为Boolean类型的参数,默认 设置 为true,所有请求均为异步请求 在一个项目真正上线的时候,一定会存在一个项目 超时 的问题,也就是服务端无法及时响应客户端提交的内容。通过对 ajax 设置 超时 设置 ,给用户一个提醒。 超时 设置 时间 定为3秒(2s之后如果没有返回结果 就发送 超时 设置 )服务端 设置 这时候发送 ajax 请求会3s后收到响应。 超时 提醒(在实际场景会使用div 实际场景) 超时 和异常给用户一个提醒(通过 ajax )在网路异常的时候也给用户一个提醒。可以借助chorme浏览器进行。