在 XHR.onreadystatechange 回调中访问通过 XHR.send(data) 发送的数据
Access data sent via XHR.send(data) in XHR.onreadystatechange callback
能否在 XMLHttpRequest 的 onreadystatechange 处理程序中找到作为参数发送给 XMLHttpRequest 的 send(data) 函数的数据?我认为此时它必须存储在其中一个属性中。
我问的原因是因为这个回调函数调用了另一个需要所述数据的函数,但是直到调用 XHR.send() 之前才知道数据,所以我不能把它放到XHR 构造函数。现在我必须为该数据使用一个全局变量,我想摆脱它。
这是代码片段:https://bpaste.net/show/2150361d3dbe
我正在使用 XHR 将图像作为 blob,所以显然 jQuery 的 Ajax 不是一个选项。所有这些都在我的用户脚本中使用,而不是在网站上使用,所以我不知道,也许全局变量根本不是什么大问题。
不,发送的数据作为 XHR 对象的 属性 不可用。一旦它被放到网络上,它就应该是可回收的。
根据您创建 onreadystatechange
回调的方式,data
变量可能仍在范围内,因此您可以直接访问它(并将其传递给其他函数)。
手动将数据设置为相应 xhr 对象的 属性 仍然比使用全局变量更好。
能否在 XMLHttpRequest 的 onreadystatechange 处理程序中找到作为参数发送给 XMLHttpRequest 的 send(data) 函数的数据?我认为此时它必须存储在其中一个属性中。
我问的原因是因为这个回调函数调用了另一个需要所述数据的函数,但是直到调用 XHR.send() 之前才知道数据,所以我不能把它放到XHR 构造函数。现在我必须为该数据使用一个全局变量,我想摆脱它。 这是代码片段:https://bpaste.net/show/2150361d3dbe
我正在使用 XHR 将图像作为 blob,所以显然 jQuery 的 Ajax 不是一个选项。所有这些都在我的用户脚本中使用,而不是在网站上使用,所以我不知道,也许全局变量根本不是什么大问题。
不,发送的数据作为 XHR 对象的 属性 不可用。一旦它被放到网络上,它就应该是可回收的。
根据您创建 onreadystatechange
回调的方式,data
变量可能仍在范围内,因此您可以直接访问它(并将其传递给其他函数)。
手动将数据设置为相应 xhr 对象的 属性 仍然比使用全局变量更好。