- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Netbean 6.9.1
GlassFish 3.0.1
jQuery 1.6.2
我正在测试我的网络应用程序的超时情况。
我对“超时”的理解是,当发送Ajax请求时,如果花费了指定的时间(例如30秒),则触发超时回调函数。
我也读过 jQuery Timeout:
超时编号
设置请求的超时(以毫秒为单位)。这将覆盖使用 $.ajaxSetup() 设置的任何全局超时。超时时间从调用 $.ajax 时开始;如果多个其他请求正在进行中并且浏览器没有可用的连接,则请求在发送之前可能会超时。在 jQuery 1.4.x 及以下版本中,如果请求超时,XMLHttpRequest 对象将处于无效状态;访问任何对象成员都可能引发异常。仅在 Firefox 3.0+ 中,脚本和 JSONP 请求无法通过超时取消;即使脚本在超时时间之后到达,它也会运行。
但是当我测试超时时,错误函数被调用,并且 txtStat 显示“错误”,而它应该是“超时”。这是我的测试步骤:
测试步骤:
预期结果:
Ajax 请求已发送,但无法到达服务器,并且调用了错误回调函数,其参数:txtStat 应具有值“timeout”。
实际结果:
调用错误回调函数,其参数:txtStat 的值为“error”
那么这是预期的行为还是我对超时的理解错误?
我的ajax代码:
$.ajax({
url: "../resources/plan/list/some",
type: "get",
dataType: "json",
timeout: 30000,
success: function(data, txtStat, xhr) {
console.log("success")
},
error: function(xhr, txtStat, errThrown) {
if(txtStat === "timeout") {
console.log("timeout");
}
else { //txtStat === "error", "abort", "parseerror"
console.log(txtStat);
}
},
complete: function(xhr, txtStat) {
console.log("completed");
}
});
最佳答案
确实,您对请求超时的理解不太正确。当请求花费超过一定的时间时就会发生超时,但是当服务器宕机时,你会发现响应立即返回。尝试在 Web 应用程序未运行时仅在浏览器中导航到该页面。例如:
它会立即完成,因为浏览器甚至无法连接。
要导致超时情况,请保持服务器运行,但请求执行类似 Thread.sleep(60000)
的页面– 服务器将接受请求,但在配置的 ajax 时间用完之前不会发送响应。
这是超时:当请求被接受,但响应没有及时发送时。
关于jQuery ajax txtStat 不返回 "timeout"而是 "error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713471/
Netbean 6.9.1 GlassFish 3.0.1 jQuery 1.6.2 我正在测试我的网络应用程序的超时情况。 我对“超时”的理解是,当发送Ajax请求时,如果花费了指定的时间(例如30
我是一名优秀的程序员,十分优秀!