是否可以在函数上调用两次onreadystatechange?

时间:2016-08-17 09:21:06

标签: javascript

我有一个像这样定义的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它工作正常,但只有两个只有一个工作。 是不允许做我正在尝试的事情?

感谢建议。

1 个答案:

答案 0 :(得分:0)

请记住,onreadystatechange是对象的属性。

设置时,您将覆盖以前的值。这与向同一对象添加两个不同的侦听器时不同,允许在单个事件上触发不同的处理程序。

这样,当您更改onreadystatechange属性时,您将完全覆盖以前的值。

您需要修改功能和命名空间以修复问题。

相关问题