【问题标题】:Using AJAX to access file on same server使用 AJAX 访问同一服务器上的文件
【发布时间】:2011-05-02 13:33:28
【问题描述】:

HTML 和 AJAX 编程新手,所以这里是:

我创建了一个网站,该网站使用来自外部 txt 文件 (content.txt) 的内容填充表格。该文本文件位于 Windows 2003 网络服务器上,并且位于 C:\Inetpub\wwwroot 文件夹中(因此它可以被http://servername:port/content.txt 访问)。我的网站当前的 AJAX 代码是这样的:

function content(file)
{
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            populate();
        }
    }
    var right_now = new Date();
    xmlhttp.open("POST",file + "?" + right_now.getTime(),true);
    xmlhttp.send();
}

然后在我的 HTML 正文中:

<body id="body" onload="javascript:content('http://servername:port/content.txt')">

现在,如果我从同一网络上的计算机上运行此代码,并且网页加载正常。但是,如果我将它放在服务器上并使其成为“实时”网站(使用 IIS),然后尝试从网络上的另一台计算机访问该网站,IE 会抛出一个错误,指出“访问被拒绝”指向 xmlhttp。开线。

现在我了解到 AJAX 不能在不同的域上工作,但在这种情况下它们肯定在同一个域上吗?或者也许我对域的想法是完全错误的。希望大家能帮到新手。干杯。

【问题讨论】:

    标签: javascript ajax webserver cross-domain


    【解决方案1】:

    这似乎是一个端口问题。查看您遇到的这个[类似]问题。

    引用其他帖子:

    要被视为具有相同来源的两个文档,协议 (http/https)、域和端口(默认 80 或 :xx)必须相同。所以不,你不能对不同的端口使用 xhr。

    【讨论】:

    • 好的,谢谢。我已将 content.txt 放入与网站 html 文件相同的文件夹中,它们现在都在端口 82 上(端口 80 正在被其他东西使用)。但是,现在填充函数不会运行,即:xmlhttp.readyState 不等于 4 或 xmlhttp.status 不等于 200
    • 终于搞定了!原来我所要做的就是将 xmlhttp.open 参数从 POST 更改为 GET。现在完美运行,干杯!
    • 啊酷。真高兴你做到了。抱歉,无法为您获取 POST/GET 答案!呵呵
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2015-01-16
    • 1970-01-01
    • 2021-05-06
    • 2011-02-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多