微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正在进行Ajax请求时重新加载页面会将空响应和状态设置为零

浏览器是Firefox 3.0.10.我正在使用Ajax请求页面.响应正在进行中可能处于readyState小于4.同时我正在尝试重新加载页面.请求结束,给出空响应.

我使用alert来查找作为响应文本给出的字符串.我假设此时达到就绪状态4.为什么它是一个空字符串?

当我提醒xmlhttpobject.status时它显示0.

当我警告xmlhttpobject.statusText发生异常时,声明“NOT AVAILABLE”.

当我在文档http://www.devx.com/webdev/Article/33024/0/page/2中读到时,它表示3和4状态和statusText可用,但是当我测试时只有状态可用,但不是satausText.

这是示例代码.

考虑到我已经请求了一个页面,我的回调函数如下

function cb(rt)
{
   if(rt.readyState==4)
   {
      alert(rt.status);
      alert(rt.statusText); // which throws an exception
   }
}

我的服务器端脚本如下

sleep(30);
//flushing little drop down code

除了这些,我注意到以下内容.

再次假设我使用Ajax请求上述脚本.
现在将有30秒的空闲时间.
在那30秒之前,我按下刷新.
我得到xmlhttpobject.status为0但是浏览器仍然没有重新加载页面直到那30秒.为什么?

当我在Ajax请求完成之前刷新页面时,状态值设置为零,就绪状态设置为4,但页面仍然等待服务器的响应结束.

怎么了?

我理解某些事情的原因如下所示.

每当我做一个Ajax请求时,如果进程成功就像插入一些东西或删除一些东西我弹出一个div表示已成功更新,我将重新加载页面.但如果有任何错误,那么我不会重新加载页面,而是我只是警告无法处理此请求.

如果用户在任何这些请求完成之前重新加载页面,我会得到一个空响应,在我的计算中存在服务器错误.所以我正在调试Ajax响应以过滤掉连接已被中断,因为用户已经按下了重新加载.所以这次当用户在请求完成之前重新加载页面时,我不想显示“无法处理此请求”.

哦……一个长篇故事.这是一个很长的描述所以我可以让专家了解我的怀疑.

所以我想要的就是上面的内容.

任何类型的答案都会让我清醒.或者我想说出所有类型的答案.

编辑:19月12日.
如果我没有得到任何正确的答案,那么我将删除这个问题,并将用例子重写.另外,我会在试验后接受.

我将创建一个演示程序,我将在此处发布链接,以便让您了解我所面对的问题.今天是29.dec.2010.

解决方法

这与浏览器版本无关.

当浏览器检测到页面更改(例如重新加载)时,它将中止所有XHR调用.每个浏览器都这样做.这是件好事.

我的问题是:为什么在ajax请求工作时/你正在重新加载页面

我的解决方案是:跟踪所有ajax请求并“手动”中止它们(是的,你可以这样做:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#abort()当你离开页面时(onunload或onbeforeunload).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐