问题标签 [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.
javascript - 在 XHR.onreadystatechange 回调中是否有不同于“4”(完成)的 readyState 有用的用途?
您是否曾经使用过 XHR 对象以onreadystatechange
不同于readyState
“4”(完整)的方式进行拦截?
我很想知道您是否曾经触发过具有可能不同值的函数。我无法想象其他状态的真正用途。它们对做某事有用吗?
如果有的话可以举一些实际的例子吗?
- 0:请求未初始化
- 1:服务器连接建立
- 2:收到请求
- 3:处理请求
- 4:请求完成,响应就绪
javascript - Firefox 中不调用 onreadystatechange
这是我的代码。
我发送ajax请求并返回值的函数:
我的其他函数将使用 myAjaxCall 函数返回值
除了在Firefox浏览器上,一切都以这种方式完美运行,我知道原因是因为在 Firefox 中,如果我使用同步请求,onreadystatechange
将不会被调用。
但是,在我的情况下,我必须使用同步的ajax 请求,否则myAjaxCall()
函数返回的值始终是初始值“ var myValue=0
”。
如何摆脱这个Firefox问题?
jquery - 我可以使用 jQuery 预过滤器来检测 readyState==3 的 onreadystatechange 事件吗?
我正在尝试在 jQuery 中实现 XHR 流彗星技术,但在检测onreadystatechange
事件时遇到了一些问题。我正在使用 Firefox 4.0.1。
我正在使用预过滤器(自 jQuery 1.5 起可用)来修改本机 XHR 对象,特别是为事件添加事件处理程序onreadystatechange
。我在http://jsfiddle.net/Rdx6f/有一个粗略的实现。触发事件时,该代码会将 XHR 对象readyState
和responseText
属性附加到文档中。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 而不是附加到文档中。onreadystatechange
alert()
我还可以在原生 JavaScript 中检测 1、2、3 或 4 的onreadystatechange
事件——参见http://jsfiddle.net/d7vaH/。(该代码几乎一字不差地取自 Dylan Schiemann 在“Even Faster Websites”一书第 115 页上的 XHR 流的实现。)readyState
我只是在这里做错了什么,比如使用 jQuery 的 Ajax 预过滤器错误或 JavaScript 错误?这可能是 jQuery 中的错误吗?
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="" 修复了它。# 表示这个页面
javascript - 使用 eval 和替代解析大型 json 的问题
我正在尝试使用 javascript 解析一个大型 json 文件(240'000 个字符)。我正在使用 ajax 从 servlet 检索 json 数据。我使用的代码适用于较小的样本,但是当 xmlHttp.responseText 包含大量 json 数据时,它就会抛出这个问题。
它说意外的令牌在包含的行上
这是代码的要点:
使用 eval() 的方法是从 xmlHttp.onreadystatechange 调用的,如果这有什么不同的话。
我也尝试使用 json2.js 并获得相同的结果,它适用于较小的 json 样本,但是当我尝试使用我的 240k 字符文件时,它说:
提前致谢。
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 发送一个数字。
我究竟做错了什么?
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。
javascript - IE7 中的 History.js onstatechange 不起作用
我集成了 History.js,这段代码在 URL 更改时运行:
它适用于除 IE7(IE8 的兼容模式)以外的所有浏览器。我认为 History.js 会处理这个问题。
IE7 不理解 onStateChange 事件是真的吗?这种情况下可以使用什么窗口事件?
javascript - 在javascript回调函数中没有获取现有对象属性的值
我通过动态创建脚本标签来加载js,我已经在脚本加载时编写了一个回调函数,但是当在加载js后调用函数时,当我在firebug中检查它时,我无法访问我的对象属性值不见了。下面是我的代码,请回答我的代码中有什么问题,或者是否有不同的方法来做同样的事情。
javascript - 面向对象的 JavaScript - AJAX 类
处理 AJAX 类。这是代码:
然后显然是这样实例化的:
我的handleRequestStateChange
方法有问题,因为它处理xmlHttp.onreadystatechange
. 通常,当您为 onreadystatechange 定义函数时,例如在调用它时不包含括号xmlHttp.onreadystatechange = handleRequestStateChange;
但是因为我试图保持handleRequestStateChange()
在类的范围内,所以我遇到了 onreadystatechange 的问题。该函数确实被调用了,但它似乎卡在了 0 的 readyState 上。
任何帮助或见解将不胜感激。请让我知道是否需要包含更多详细信息,或者我是否不清楚某些事情。