问题标签 [onreadystatechange]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
260 浏览

javascript - 在 XHR.onreadystatechange 回调中是否有不同于“4”(完成)的 readyState 有用的用途?

您是否曾经使用过 XHR 对象以onreadystatechange不同于readyState“4”(完整)的方式进行拦截?

我很想知道您是否曾经触发过具有可能不同值的函数。我无法想象其他状态的真正用途。它们对做某事有用吗?

如果有的话可以举一些实际的例子吗?

我说的是这些

  • 0:请求未初始化
  • 1:服务器连接建立
  • 2:收到请求
  • 3:处理请求
  • 4:请求完成,响应就绪
0 投票
1 回答
4612 浏览

javascript - Firefox 中不调用 onreadystatechange

这是我的代码。

我发送ajax请求并返回值的函数:

我的其他函数将使用 myAjaxCall 函数返回值

除了在Firefox浏览器上,一切都以这种方式完美运行,我知道原因是因为在 Firefox 中,如果我使用同步请求,onreadystatechange将不会被调用。

但是,在我的情况下,我必须使用同步的ajax 请求,否则myAjaxCall()函数返回的值始终是初始值“ var myValue=0”。

如何摆脱这个Firefox问题?

0 投票
2 回答
1671 浏览

jquery - 我可以使用 jQuery 预过滤器来检测 readyState==3 的 onreadystatechange 事件吗?

我正在尝试在 jQuery 中实现 XHR 流彗星技术,但在检测onreadystatechange事件时遇到了一些问题。我正在使用 Firefox 4.0.1。

我正在使用预过滤器(自 jQuery 1.5 起可用)来修改本机 XHR 对象,特别是为事件添加事件处理程序onreadystatechange。我在http://jsfiddle.net/Rdx6f/有一个粗略的实现。触发事件时,该代码会将 XHR 对象readyStateresponseText属性附加到文档中。onreadystatechange然而,奇怪的是,它似乎只在为 1 onreadystatechange时检测到事件。readyState

换句话说,onreadystatechange当 XMLHttpRequest 对象处于“已打开”状态(readyState 1)时,jQuery 似乎正在检测事件,但当 XHR 对象处于“已收到标头”(readyState 2)、“正在加载”(readyState 3 ),也不是“完成”(readyState 4)。

奇怪的是,如果我alert()在事件处理程序中,那么当 readyState 为 1、2、3 和 4 时,我确实看到了处理。请参阅http://jsfiddle.net/Rdx6f/1/与http://jsfiddle.net/Rdx6f/相同的代码,只是ing 而不是附加到文档中。onreadystatechangealert()

我还可以在原生 JavaScript 中检测 1、2、3 或 4 的onreadystatechange事件——参见http://jsfiddle.net/d7vaH/。(该代码几乎一字不差地取自 Dylan Schiemann 在“Even Faster Websites”一书第 115 页上的 XHR 流的实现。)readyState

我只是在这里做错了什么,比如使用 jQuery 的 Ajax 预过滤器错误或 JavaScript 错误?这可能是 jQuery 中的错误吗?

0 投票
1 回答
115 浏览

ajax - AJAX 导致 Div 消失

使用 AJAX 调用 CGI 脚本,该脚本打开文件并将其打印在 DIV 中。

这在我拥有的测试页面上工作正常,但由于某种原因在另一个页面中它会将内容打印到 DIV 中,然后将清除 DIV。使用 alert() 我可以看到 readystate 从 1,2,3,4,1,4 变化,然后在他的 4 之后第二次清除 div 内容。它实际上调用了 updatepage() 函数两次,但第二次 DIV 被清除。当我签入萤火虫时,innerHTML 从具有内容变为具有“”。

在我的测试页面中,即使出现相同的 readystate 序列,也不会发生这种情况。

这是我遇到问题的代码片段:

编辑 !!!!!!!!!!!!!!!!!

好的,我想我发现了问题所在,但我不知道为什么。

在锚 html href="" 中导致了问题。一旦我删除它, div 就会保持填充状态。

这将导致 DIV 在打印后消失

用 href="#" 替换 href="" 修复了它。# 表示这个页面

0 投票
1 回答
2699 浏览

javascript - 使用 eval 和替代解析大型 json 的问题

我正在尝试使用 javascript 解析一个大型 json 文件(240'000 个字符)。我正在使用 ajax 从 servlet 检索 json 数据。我使用的代码适用于较小的样本,但是当 xmlHttp.responseText 包含大量 json 数据时,它就会抛出这个问题。

它说意外的令牌在包含的行上

这是代码的要点:

使用 eval() 的方法是从 xmlHttp.onreadystatechange 调用的,如果这有什么不同的话。

我也尝试使用 json2.js 并获得相同的结果,它适用于较小的 json 样本,但是当我尝试使用我的 240k 字符文件时,它说:

提前致谢。

0 投票
1 回答
806 浏览

python - 在flush()之后在Python中清除标准输出

我正在尝试使我的 Python 脚本在打印时将其输出流式传输到我的网页。

所以在我的javascript中我这样做:

在我的 Python 脚本中,我有:

现在我期待0 1 2 3 4,但我得到的是0 0 1 0 1 2 0 1 2 3 0 1 2 3 4

它似乎每次都发送整个缓冲区,而我真正想要的是它在每个 onreadystatechange 发送一个数字。

我究竟做错了什么?

0 投票
3 回答
14366 浏览

javascript - 动态创建脚本:readyState 永远不会“完成”

我正在尝试在脚本完全加载后做一些事情。(IE8)

我用于测试的脚本:http: //ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
和无效的:http ://ajax.googleapis.com/ajax/libs/ jquery/1.5.1/jquery.minaaaaaaaa.js

编码...

在我的情况下,“完整”永远不会显示,“加载”即使网址无效也会显示。所以没有办法判断一个脚本是否在 IE 下正确加载。

难道我做错了什么?为什么我从来没有得到完整的状态?

更新

好的,我刚刚阅读了一些文章,似乎 readystate 不是检测脚本加载的可靠方法。

那么还有其他方法吗?没有 jQuery,而是纯 Javascript。

0 投票
1 回答
911 浏览

javascript - IE7 中的 History.js onstatechange 不起作用

我集成了 History.js,这段代码在 URL 更改时运行:

它适用于除 IE7(IE8 的兼容模式)以外的所有浏览器。我认为 History.js 会处理这个问题。

IE7 不理解 onStateChange 事件是真的吗?这种情况下可以使用什么窗口事件?

0 投票
2 回答
223 浏览

javascript - 在javascript回调函数中没有获取现有对象属性的值

我通过动态创建脚本标签来加载js,我已经在脚本加载时编写了一个回调函数,但是当在加载js后调用函数时,当我在firebug中检查它时,我无法访问我的对象属性值不见了。下面是我的代码,请回答我的代码中有什么问题,或者是否有不同的方法来做同样的事情。

0 投票
1 回答
3119 浏览

javascript - 面向对象的 JavaScript - AJAX 类

处理 AJAX 类。这是代码:

然后显然是这样实例化的:

我的handleRequestStateChange方法有问题,因为它处理xmlHttp.onreadystatechange. 通常,当您为 onreadystatechange 定义函数时,例如在调用它时不包含括号xmlHttp.onreadystatechange = handleRequestStateChange;但是因为我试图保持handleRequestStateChange()在类的范围内,所以我遇到了 onreadystatechange 的问题。该函数确实被调用了,但它似乎卡在了 0 的 readyState 上。

任何帮助或见解将不胜感激。请让我知道是否需要包含更多详细信息,或者我是否不清楚某些事情。