什么会导致页面被取消?我有一个Chrome开发者工具的截图。
这种情况经常发生,但不是每次都发生。似乎一旦缓存了一些其他资源,页面刷新就会加载LeftPane.aspx。真正奇怪的是,这只发生在谷歌Chrome浏览器中,而不是ie8。知道为什么Chrome会取消一个请求吗?
什么会导致页面被取消?我有一个Chrome开发者工具的截图。
这种情况经常发生,但不是每次都发生。似乎一旦缓存了一些其他资源,页面刷新就会加载LeftPane.aspx。真正奇怪的是,这只发生在谷歌Chrome浏览器中,而不是ie8。知道为什么Chrome会取消一个请求吗?
当前回答
对于我的案例,我有一个锚与点击事件像
<a href="" onclick="somemethod($index, hour, $event)">
里面点击事件我有一些网络呼叫,Chrome取消请求。锚有href与""意味着,它重新加载页面,同时它有点击事件与网络调用被取消。每当我用void替换href时
<a href="javascript:void(0)" onclick="somemethod($index, hour, $event)">
问题消失了!
其他回答
这是chrome取消请求的另一个例子,我刚刚遇到过,上面的答案中没有提到。
简单地说 我的android手机上的自签名证书不受信任。
细节 我们正处于开发/调试阶段。url指向自签名主机。代码是这样的:
location.href = 'https://some.host.com/some/path'
Chrome只是默默地取消了请求,没有给像我这样的web开发新手留下任何线索来解决这个问题。一旦我使用android手机下载并安装了证书,问题就消失了。
在我的案例中,显示电子邮件客户端窗口的代码导致Chrome停止加载图像:
document.location.href = mailToLink;
移动到$(window)。负载(功能 () {...}) 而不是美元(函数 () {...}) 帮助。
以我为例,我发现它是jquery的全局超时设置,一个jquery插件设置全局超时为500ms,这样当请求超过500ms时,chrome就会取消请求。
在我的情况下,问题的原因是另一个。
我的应用程序坐在代理后面,Chrome请求被发送与If-Modified-Since HTTP头。当这个头文件出现时,预期的行为是:
只有在给定日期后最后一次修改时,服务器才会以200状态发送回所请求的资源。如果请求此后未被修改,则响应将是一个没有任何正文的304;
代理没有满足这一期望,响应一个304状态代码,但一个非空的主体,从而导致请求被取消。
在修复代理行为后,请求就像一个魅力。
在这能帮助任何人,我遇到取消状态时,我省略了返回false;在表单中提交。这导致ajax发送之后立即紧跟提交操作,这将覆盖当前页面。代码如下所示,在末尾返回重要的false。
$('form').submit(function() {
$.validator.unobtrusive.parse($('form'));
var data = $('form').serialize();
data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();
if ($('form').valid()) {
$.ajax({
url: this.action,
type: 'POST',
data: data,
success: submitSuccess,
fail: submitFailed
});
}
return false; //needed to stop default form submit action
});
希望这能帮助到别人。