我有一个像这样定义的XMLHttpRequest:
sub_opt=function()
{
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
var data = new FormData();
...some stuff to complete data
xhr.open( 'post', 'PHP/write_and_exec_opt.php');
var display_opt=xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200 ) {
text=xhr.responseText.trim();
....some stuff
}
xhr.send(data);
return xhr;
}
此函数由另一个函数调用,其中xhr作为名称为previousRequest的js文件的全局var存储。 当请求处理时,用户可以做其他事情但我需要一些他可能已经初始化的东西,一旦请求结束就停止。因此,我把以下部分放在必要的地方:
var stop_refresh=previousRequest.onreadystatechange = function() {
if (previousRequest.readyState == 4 ) {
clearInterval(refresh);
}};
当相同的请求结束时调用。 问题是,如果我只放置一个onreadystatechange它工作正常,但只有两个只有一个工作。 是不允许做我正在尝试的事情?
感谢建议。
答案 0 :(得分:0)
请记住,onreadystatechange是对象的属性。
设置时,您将覆盖以前的值。这与向同一对象添加两个不同的侦听器时不同,允许在单个事件上触发不同的处理程序。
这样,当您更改onreadystatechange属性时,您将完全覆盖以前的值。
您需要修改功能和命名空间以修复问题。