【问题标题】:Error: INVALID_STATE_ERR: DOM Exception 11 breaking my AJAX?错误:INVALID_STATE_ERR:DOM 异常 11 破坏了我的 AJAX?
【发布时间】:2010-12-14 01:23:37
【问题描述】:

这个错误会破坏我的代码吗?我得到它的就绪状态 1。

相关HTML代码:

<input type="button" value="Log In" onclick="login()" class="submit" />

相关的Javascript:

function login() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("headSpan").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "logIn.php", true);
        xmlhttp.send("usr=bob");
    }

logIn.php:

<?php
echo $_POST['usr'];
?>

那么,xmlhttp.responseText 就是“”。如果它在做我认为应该做的事情,我会得到'bob';

提前致谢。

编辑:此错误定义为“如果尝试使用不可用或不再可用的对象”。仅供参考。

【问题讨论】:

  • 报错对应哪一行?
  • 我怎么知道?我一直在使用 Chrome Javascript 控制台,在 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 上只有一个断点。
  • 哦,它不给你一行?好吧,这是一个非常简单的脚本;只需在所有行上放置一个断点。
  • 另外,我见过的所有 AJAX 示例都将open() 放在onreadystatechange 之前。我严重怀疑这是问题所在,但你永远不知道......
  • 看到这个类似的问题stackoverflow.com/questions/3368857/…

标签: php javascript html ajax xmlhttprequest


【解决方案1】:

找到解决办法:

var params = "usr=bob";
        xmlhttp.open("POST", "logIn.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(params);

显然,请求标头并不总是像我所假设的那样自动为 PHP 工作(并且没有发现任何证据可以阻止我放弃这种信念)。无论如何,非常简单的解决方案,但仍然令人沮丧。只是为了获得额外的信息:运行 WAMP(不是预先构建的东西,首字母缩略词)。 Apache 2.2、PHP 5.3.3。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多