XMLHttpRequest.status总是返回0

时间:2010-05-02 06:31:40

标签: javascript firefox xmlhttprequest

HTML

<a href="#" onclick="MyObj.startup()">click me</a>

js code

var MyObj = 
{
    startup : function()
    {
        var ajax = null;
        ajax = new XMLHttpRequest();
        ajax.open('GET', 'http://www.nasa.gov', true);
        ajax.onreadystatechange = function(evt)
        {
            if(ajax.readyState == 4)
            {
                if (ajax.status == 200)
                {
                    window.dump(":)\n");
                }
                else
                {
                    window.dump(":(\n");
                }
            }
        }
        ajax.send(null);
    }
}
无论实际返回代码是什么,

ajax.status总是返回0,无论它是哪个站点。我说实际,因为ajax.statusText返回正确的值,例如OK或重定向......

ajax.readyState也返回正确的值,最后返回4。

2 个答案:

答案 0 :(得分:4)

您可以通过设置php代理(xampp服务器并为您要获取的URL传递查询字符串)在本地环境中轻松解决此问题。让你的php代理wget url并回显其内容。这样,您的本地html文件(当被视为http://localhost/your.html时)可以整天从域中发送ajax请求。只是不要指望内容可以像在该域中本地一样工作。

答案 1 :(得分:3)

您的网站是http://www.nasa.gov/的一部分吗?否则,XMLHttpRequest将因Same Origin Policy而失败。

此外,如果页面作为非HTTP请求提供,status可以为0.请参阅https://developer.mozilla.org/En/Using_XMLHttpRequest#section_3