使用POST方法的Laravel + Vue + Axios问题

时间:2018-05-22 02:24:29

标签: php laravel vue.js axios plesk

我正在开发一个存储在VPS上的Laravel 5.6项目(我们称之为“生产”,尽管没有这样的创建环境)。

我们还将Plesk& amp; Github将Web应用程序从我们的本地环境手动部署到服务器。

问题是我从他们返回的API加载一些数据错误405方法不允许( GET )...但实际上他们注册为app.jsroutes/api.php

中发布

最棒的是,在我的本地环境中,他们的工作非常完美。

这里有一些信息:

服务器:

  • Ubuntu Server 14.04
  • Apache / MySQL
  • PHP 7.2.5

我的电脑:

  • 使用XAMPP的Windows 10
  • Apache / MySQL
  • PHP 7.2.2

每个浏览器中的Developer工具:

  

请求方法: GET
  状态代码: 405方法不允许

以下是app.js中的代码:

loadCountries: function loadCountries(total) {
    axios.post('/api/properties/countries/').then(function (response) {
        app.countries = response.data;
    });

    total = total <= this.countries.length ? total : this.countries.length;

    if (total) {
        var newArr = [];
        for (i = 0; i < total; i++) {
            newArr.push(this.countries[i]);
        }
        this.countries = newArr;
    }
},

注意:如果我在开发人员工具中编辑相同的请求并再次发送,但作为POST请求它会返回一切正常,因此API似乎在POST请求上正常工作。

2 个答案:

答案 0 :(得分:2)

尝试删除网址中的尾部斜杠。

,例如,

/api/properties/countries

替换原始app.js中的那一行就可以了,

loadCountries: function loadCountries(total) {
axios.post('/api/properties/countries').then(function (response) {
    app.countries = response.data;
});

total = total <= this.countries.length ? total : this.countries.length;

if (total) {
    var newArr = [];
    for (i = 0; i < total; i++) {
        newArr.push(this.countries[i]);
    }
    this.countries = newArr;
}

},

答案 1 :(得分:0)

我遇到了这个问题,我通过使用具有完整网址的计算属性来解决它

computed: {
    sendAnswersUrl: function () {
        return window.location.protocol + "//" + window.location.hostname, +  "/api/properties/countries";
     }
  }

然后在使用axios发布时

axios.post(this.sendAnswersUrl, {
          group: this.id,
        })
        .then(data => {})
        .catch(() => {});