cakephp 为什么 AJAX 只适用于主页?

yebdmbv4  于 2022-11-12  发布在  PHP
关注(0)|答案(2)|浏览(118)

我已经烤新项目。我的简单 AJAX 函数插入到..\templates\Pages\home.php

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "myTest.txt", true);
  xhttp.send();
}

我的myTest.txt位于..\webroot\位置。
为什么这对主页有效,但对项目中的任何其他创建的站点无效?对于除了主页cakePHP以外的所有站点,都找不到我的文本文件。我已经尝试了这个文件的不同位置。

7xllpg7q

7xllpg7q1#

你应该使用“/myTest.txt”来打开URL,如果前面没有/,它会被解释为一个相对URL,所以如果你在/page/2之类的地方,它会寻找/page/myTest.txt,但它并不存在。

vltsax25

vltsax252#

1.将HTTP_ROOT作为bootstrap.php中的常量,保存基本url(不带子路径的站点名称)。
1.在layout-〉head部分定义<base href="<?= HTTP_ROOT;?>" />。这将有助于 AJAX 请求中命中没有子路径的站点。
1.您可以在布局的<head>上的javascript内联代码中使用另一个常量eg-“siteURL”,或者使用包含基本路径的隐藏输入。
1.如果需要,请使用常数。siteURL+(如果webroot下还有其他目录)+'myTest.txt'

相关问题