获得0作为状态

Bob*_*les 5 html javascript xml ajax http

我有一个简单的HTML文件,从服务器获取数据并输出:

<html>
    <head>
        <script type="text/javascript">
        var xmlhttp = new XMLHttpRequest();
        function startRequest() {
            xmlhttp.onreadystatechange = handleStateChange;
            xmlhttp.open("GET", "http://new-host-2.home/test.html", true);
            xmlhttp.send(null);
        }
        function handleStateChange() {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    alert("The server replied with: ", xmlhttp.responseText);
                }
                else {
                    alert(xmlhttp.status);
                }
            }
        }
        </script>
    </head>
    <body>
        <form>
            <input type="button" value="Woooo" onclick="startRequest()"/>
        </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

服务器上的文件test.html如下所示:

<h1>Data received!</h1>
Run Code Online (Sandbox Code Playgroud)

尽管事实上在控制台中它表示一切正常,并且给出200状态,但我仍然保持0作为状态.当我换if (xmlhttp.status == 200)到时if (xmlhttp.status == 0),它只是输出The server replied with:.为什么是这样?我搞砸了什么? 编辑:它可能只是我的服务器,我将切换到另一个.标题可能会有所帮助:

Response Headers
Accept-Ranges   bytes
Connection  Keep-Alive
Content-Length  13
Content-Type    text/html
Date    Sat, 09 Jun 2012 14:17:11 GMT
Etag    "267749b-d-4c20a6d0ef180"
Keep-Alive  timeout=15, max=100
Last-Modified   Sat, 09 Jun 2012 13:52:22 GMT
Server  Apache/2.2.19 (Unix) DAV/2
Request Headers
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Host    new-host-2.home
Origin  null
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0
Run Code Online (Sandbox Code Playgroud)

Chr*_*ler 1

Alert 函数只接受一个参数,你传递的是 2 个参数。

试一试:

var xmlhttp = new XMLHttpRequest(); 
function startRequest() { 
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4)
        {
            if(xmlhttp.status==200)
                alert("The server replied with: " + xmlhttp.responseText);
            else
                alert(xmlhttp.status);
        }
    }
    xmlhttp.open("GET", "http://new-host-2.home/test.html", true); 
    xmlhttp.send(); 
} 
Run Code Online (Sandbox Code Playgroud)

如果仍然不起作用,则可能是安全问题: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0

如果它在 Safari 中有效,请尝试删除请求中的域以使路径成为相对路径。Firefox 可能会认为您正在尝试一些跨域的东西。

var xmlhttp = new XMLHttpRequest(); 
function startRequest() { 
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4)
        {
            if(xmlhttp.status==200)
                alert("The server replied with: " + xmlhttp.responseText);
            else
                alert(xmlhttp.status);
        }
    }
    xmlhttp.open("GET", "/test.html", true); 
    xmlhttp.send(); 
} 
Run Code Online (Sandbox Code Playgroud)