AJAX路由始终指向Web根目录

时间:2018-02-22 08:57:47

标签: php laravel axios

在我的laravel项目中,我有一个如下定义的邮政路线:

Route::post('myroute', function(){
    // Do things here
}

在我的app.js中,我使用的是名为axios的库,我也将myroute作为axios.post()方法的参数传递:

axios.post('myroute', { value: myargument }).then(function(response) {
    // Do thigs here
}

在我的本地机器中,axios调用工作正常。但是在远程机器中,它并没有。因为在服务器中,应用程序不直接在根目录下上传。它已上传到:http://example.com/level1/level2目录。

因此,当在服务器上执行ajax调用时,它会返回503服务不可用响应,因为它会查找http://example.com/myroute。但应用程序根本不存在。如何告诉它从我当前所在的目录(level2)中寻找myroute路由而不是从root?

我尝试更改axios.post()中的路径,如下所示:/../../myroute但是ajax调用仍指向根目录。但只有在我对此路径进行硬编码时才有效:/level1/level2/myroute。我该怎么办呢?

3 个答案:

答案 0 :(得分:0)

两种环境中的相对路径可能相同吗?如果使用/启动路径,则会查找根目录。如果您只是foldername/asset.ext,它将基于脚本的工作目录。

答案 1 :(得分:0)

如果我正确理解,那么您需要使用java脚本生成您的URL发送。 使用 location.href 获取当前网址

var url = location.href+'/myroute';

答案 2 :(得分:0)

您可以这样使用已配置的axios实例。

import axios from 'axios';

var instance = axios.create();

if (process.env.NODE_ENV == 'production') {
   instance.defaults.baseURL = 'http://example.com/level1/level2'
}

export default instance

现在您使用此实例而不是默认axios。 它将使用生产中的子目录URL