【问题标题】:ReadyState and status equal 1 and 0 respectivelyReadyState 和 status 分别等于 1 和 0
【发布时间】:2013-10-31 14:21:23
【问题描述】:

我在我的 Linux 机器上全新安装了 Appache 和 PHP。这是我想出的第一个脚本来测试这些东西是如何工作的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5//EN"
    "http://www.w3.org/TR/html5/html5.dtd"
    >
<html lang="en">
<head>
    <title>First Ajax</title>
    <script language="javascript" type="text/javascript">
    var xmlhttp;

    function getNum()
    {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = callback;

        xmlhttp.open("GET" , "random.php" , true);
        xmlhttp.send();
    }

    //When Information comes back from the server
    function callback()
    {
        if(xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert("Ready")
            document.getElementById('result').innerHTML = xmlhttp.responseText;
        }
        else
        {
            alert("Nope")
        }
    }

    </script>
</head>
<body>
    <div id="result">
    </div>
    <input type="button" value="Get Random Number" onclick="getNum()"/>
</body>
</html>

但是,xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200 行的计算结果似乎为 false,因为返回了“Nope”。如果我用|| 替换&amp;&amp; 也是一样的。如果我从浏览器转到 localhost/random.php,它工作正常。我知道确切的代码适用于其他计算机。知道我卡在哪里了吗?

编辑:根据@Musa 的评论,我意识到readyState 等于1,status 为0,表示对象已创建,尚未调用send 方法(@987654321 @) 。反正我还是迷路了。

【问题讨论】:

  • @Musa 请阅读我在问题中的编辑。

标签: javascript php html ajax apache


【解决方案1】:

readyState 不会直接达到 4,它可以在达到 4 之前达到其他值。 试试这样的

    if(xmlhttp.readyState==4){ 
        if (xmlhttp.status==200)
        {
            alert("Success")
            document.getElementById('result').innerHTML = xmlhttp.responseText;
        }
        else
        {
            alert("Failure")
        }
    }

【讨论】:

  • 是的,但是因为我的readyState是1,我的状态是0,所以你的代码也返回“Failure”。问题是如何让readyState等于1,status等于200。
  • 不是它不会,除了readyState = 4以外的任何东西都意味着请求不完整。
猜你喜欢
  • 2014-09-10
  • 2014-09-21
  • 2013-10-24
  • 2018-12-24
  • 2014-12-17
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多