【问题标题】:URL of open(...) relative or absoluteopen(...) 相对或绝对的 URL
【发布时间】:2018-09-07 13:43:53
【问题描述】:

我不太明白 XMLHttpRequest open(method, url, async)url 参数的作用。假设我有一个这样的网络服务器:

page.htmlcontroller.php 发送异步请求。由于我们只能向我们自己的 Web 服务器发送请求,因此我假设我们不必在 URL 中重写网站名称。

示例:我们可以简单地写成open('GET', 'controller.php', true),而不是open('GET', 'http://www.mywebsite/controller.php', true)

我不知道这个 URL 是相对于 page.html 还是相对于服务器根目录的绝对值。


TL;DR:我必须写open('GET', 'controller.php?param=1', true) 还是open('GET', 'folder/controller.php?param=1', true)

【问题讨论】:

  • 我的意思是......一个会工作,一个不会,应该很容易弄清楚。
  • “因为我们只能向我们自己的网络服务器发送请求” — That isn't true
  • @KevinB 我都测试过,我想知道我网站的错误是不是来自这里。
  • 鉴于您的示例(绝对网址),folder 您的网络服务器的根目录。
  • @JacopoStanchi — 什么错误?

标签: javascript html ajax xmlhttprequest


【解决方案1】:

它是相对于页面的文件夹。 HTML 和 JavaScript 中的所有 URL 都相对于页面进行处理(更准确地说,是页面的 基本 URL,可以使用 <base> 标记进行更改)。

所以你应该使用:

open('GET', 'controller.php?param=1', true);

因为控制器与调用它的页面位于同一文件夹中。

【讨论】:

  • 所以我必须写open('GET', 'controller.php?param=1', true)?如果是这样,我也可以写open('GET', 'http://www.mywebsite/folder/controller.php?param=1', true)吗?
  • 当然可以。该规则仅适用于相对 URL,绝对 URL 不受影响。
  • 通常您使用相对 URL,因此您可以轻松地将所有内容移动到不同的服务器或文件夹,而无需更改任何内容。
【解决方案2】:

与 JavaScript 中的所有 URL 一样,相对 URL 是相对于运行 JavaScript 代码的页面的 URL。

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多