【问题标题】:Get returned data after posting with axios (vue+ laravel)用axios发布后获取返回的数据(vue+laravel)
【发布时间】:2020-02-27 01:23:57
【问题描述】:

我想创建一个自定义登录系统,使用 vue 作为前端,laravel 处理 api,axios 作为两者之间的控制器。我想从我的AuthController 获取返回的数据。这是我的代码:

Vue:

export default {
name: 'Login',
data(){
    return {
        user_input: [
            {email: ''},
            {password: ''}
        ],
        csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content')
    }
},
methods: {
    userLogin: function(){
        let params = Object.assign ({}, this.user_input)
        axios.post('/api/login/', params)
        .then(function(response){
            console.log(response.data)
        })
        .catch(function(error){
            console.log(error)
        })

    }
}
}

在 AuthController 中:

public function login(Request $request) {
    return "Hey";
}

控制台上的输出是这样的:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="csrf-token" content="40lajOfdWdmIQ1yP49dyeyToidT79CntGyHqrNRD">
<link rel="stylesheet" href="/css/app.css">
<title>VueComplete</title>
</head>
<body>
<div id="app">
    <App/>
</div>
<script src="http://vuecomplete.test/js/app.js"></script>
</body>

(这基本上是我的 app.blade.php 视图)。

为什么不返回“嘿”?

我也试过了:

public function login(Request $request) {
    return $request->email;
}

但它产生了相同的结果。我怎样才能解决这个问题? 非常感谢!

更新

我正在使用 vue-router 在 laravel 中创建一个 SPA。在我的路线(web.php)中,我有点像这样:

Route::get('/{any}', 'SPAController@index')->where('any','.*');

然后在控制器中:

public function index() {
    return view('app');
}

这可能是它返回 app.blade.php 的整个 html 代码的原因。
有没有办法在仍然使用 vue-router 的 SPA 功能的同时访问api/login

【问题讨论】:

  • 您是否也可以发布您的 route/api.php 以显示您的“/api/login/”实际上指向 AuthController@login ?
  • @TerryD 我已经更新了我的问题。我在我的 web.php 中使用了一个“re-router”,它总是指向主视图(app.blade.php)。这可能就是它返回所有 html 代码的原因。有没有办法在启用此重新路由器的情况下访问 api/login?

标签: php laravel vue.js axios


【解决方案1】:

我解决了。在 vue 上,它应该是 api/login 而不是 /api/loginapi/login/ 之类的。

【讨论】:

    【解决方案2】:

    从 web 路由中排除 api 路由

    Route::get('/{any}', 'SPAController@index')->where('any', '^(?!api).*$');
    

    希望对你有帮助

    【讨论】:

    • 谢谢!我设法使用api/login 而不是/api/login 解决了它。我猜当 laravel 第一次看到 / 时,它会自动触发重定向功能。
    • 向相对 url 发出请求将在稍后中断嵌套路由!小心点
    • 感谢您的提醒!
    • 最后。我坚持了一周!谢谢
    猜你喜欢
    • 2018-09-03
    • 2018-12-03
    • 2019-06-21
    • 2020-10-09
    • 1970-01-01
    • 2020-04-23
    • 2021-10-28
    • 2020-05-18
    • 2023-03-23
    相关资源
    最近更新 更多