0

我正在构建一个 chrome 扩展,我的 Ajax 请求的响应以“就绪”(状态 200 和就绪状态 4)的形式出现 4 次而不是一次,并且它没有经过阶段 1-3。而是 4 次 4 。这对我来说很糟糕,因为我向用户发出了 4 次而不是一次的警告。

我的代码是简单的 javascript

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    console.log(xmlhttp.readyState + xmlhttp.status);
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        if (xmlhttp.response) checkForAlertTab(xmlhttp.response);
        else console.log('false');
    }
}
xmlhttp.open("POST", "http://myserver.php", true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(sendToServer);

我在服务器中的代码只是一个 php,它从数据库中提取一些数据并将其回显,响应很好而且很漂亮(信息就在那里)但是为什么 ajax 就绪状态不能正常通过他的阶段 - 什么可以是这个原因吗?

4

1 回答 1

-1

为什么不在你的 chrome 扩展中使用 jQuery 并使用 $.ajax!它很轻巧,可让您轻松完成工作。

http://api.jquery.com/jQuery.ajax/

无论如何,上述问题的可能原因 - 因为您的 xmlhttp 对象是全局的,所以每次调用 ajax post 而不是替换它时,chrome 可能会分配一个新的 onreadystatechange 。这实际上取决于通话次数。

于 2012-12-07T21:57:46.450 回答