【问题标题】:relative path for open method of a XMLHttpRequest objectXMLHttpRequest 对象的 open 方法的相对路径
【发布时间】:2013-01-29 14:32:11
【问题描述】:

在包含 Ajax 请求的 JavaScript 文件中,URL 与什么相关?我有包含目录 alpha 和 bravo 的 www 目录。 alpha 中的 JavaScript 文件和包含它的 HTML 文件,以及处理请求的 PHP。

在 JavaScript 文件中,我有 xmlhttp.open("GET", "CheckServer.php?name="+name,true);,但我认为 CheckServer.php 不正确。我试过../bravo/CheckServer.php,但它不起作用。

我没有使用 JQuery,我使用的是 WAMP。

另外,我可以使用任何故障排除工具来查看用于处理请求的 PHP 页面是否首先被访问?

编辑:我打开了控制台,它说我在 JavaScript 文件中调用的函数没有定义。仅当我将 .js 文件移动到不同的目录时才会发生这种情况。 (我适当地修改了<script> 标签:<script type="text/javascript" src="../alpha/Check.js">

编辑 2:我认为 WAMP 存在问题,因为我将完全相同的文件/文件夹复制到桌面并且一切正常。

【问题讨论】:

    标签: php javascript ajax path


    【解决方案1】:

    它是相对的,基于调用它的页面的当前位置。它与从何处加载 JavaScript 无关。

    打开控制台并查看 Ajax 请求 [控制台或网络选项卡],您将看到它正在请求的路径。

    【讨论】:

      【解决方案2】:

      这是一个 URL,它们本身与 目录 无关。它们可能被映射到服务器上的目录,并且通常是,但客户端永远无法确定并且不在乎。 URL 相对于当前 URL(您在浏览器地址栏中看到的内容)。

      所以,问题不是“CheckServer.php 在服务器上的位置”,而是“我如何从客户端访问它”。

      如果是这样的:

      http://example.com/alpha/index.html
      http://example.com/bravo/CheckServer.php
      

      很好。使用相对 URL。

      但如果是这样的话:

      http://alpha.example.com/index.html
      http://bravo.example.com/CheckServer.php
      

      然后它变得复杂。您必须查看CORS(跨域资源共享),因为 AJAX 通常不能跨不同域工作。

      哦,如果 CheckServer.php 根本无法访问...您可能可以想象答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-15
        • 2011-02-24
        • 1970-01-01
        • 2012-03-11
        • 2014-07-13
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多