进行Ajax调用时,基本URL正在更改

进行Ajax调用时,基本URL正在更改,ajax,cakephp,cakephp-3.0,Ajax,Cakephp,Cakephp 3.0,我有一个CakePHP3.x应用程序,其中一些API是从AJAX调用的 在AJAX上,我这样称呼url: url: 'user/id/' + id, method: 'get', dataType: 'json' // ... 等等 我的网址是 所以ajax上的url就像 但由于某些原因,url有时会更改为 我应该换什么? 发生了什么?这是因为URL中的actionparameter 这里有一些例子,以便您更好地理解它 让我们考虑一下我们项目的每个页面的链接。 单击此处添加新用户 此链接将根

我有一个CakePHP3.x应用程序,其中一些API是从AJAX调用的

在AJAX上,我这样称呼url:

url: 'user/id/' + id,
method: 'get',
dataType: 'json'
// ...
等等

我的网址是

所以ajax上的url就像

但由于某些原因,url有时会更改为

我应该换什么?
发生了什么?

这是因为URL中的actionparameter

这里有一些例子,以便您更好地理解它

让我们考虑一下我们项目的每个页面的链接。 单击此处添加新用户

此链接将根据您当前的URL创建不同的URL

Current URL                                       URL generate by LINK
localhost/products  (here index is the method)    localhost/users/add
localhost/products/add                            localhost/products/users/add
localhost/products/edit/1                         localhost/products/edit/users/add

要解决此问题,请在开始时使用/并提供来自webroot的路径。我认为另一个答案是正确的

关于如何解决这个问题,我通常做的是将webroot保存为从CakePHP返回的javascript变量。通过在模板文件的标题中执行此操作,它将在任何地方都可用:

<!-- src/Templates/Layout/default.ctp -->
<head>
    <script>
         var webroot = <?= $this->request->webroot ?>
    </script>
</head>

现在,无论您的应用程序放在Web服务器上的什么位置,调用都将如预期的那样进行。

您应该尝试弄清楚这里有时真正意味着什么。如果它只发生在特定的页面上,或者在特定的操作之后,那么您可以查看这些区域。这真的很有帮助!谢谢您:
url: webroot + "user/id" + id //...