laravel vue SPA页面在ajax请求上返回HTML而不是json值

问题描述 投票:0回答:1

这是来自Vue页面的ajax请求。

AuthenticationServices.checkEmail(this.userData.email).then(response => {
    console.log(response);
    if (response.data == 1) {
        this.errored = true;
    } else {
        this.errored = false;
        this.successInput = true;
    }
}).catch(error => {
    console.log(error);
});

这是AuthenticationService.js中的代码

checkEmail(email) {
    const url = '/check-email' + '/' + email;
    const headers = {
        'Accept': 'application/json',
        'X-Requested-with': 'XMLHttpRequest'
    }
    return Api.get(url, headers);
}

以及Api.js上的这个

get(url, headers = {}) {
    url = this.prepareUrl(url);
    const options = {
        headers: headers
    }
    return axios.get(url, options);
},
prepareUrl(endpoint) {
    let baseUrl = '127.0.0.1:8000/api';
    return baseUrl + endpoint;
}

这是我的web.php,它呈现所有页面

Route::get('/{any}', function () {
  return view('welcome');
})->where('any', '.*');

并且在Api.php中,我有用于checkEmail的路由

Route::get('/check-email/{$email}', 'Frontend\Authentication\AuthenticationController@checkEmail')->name('check-email');

并且在控制器中,我有

public function checkEmail($email)
{
    return response()->json('ok');
}

当我沿着那条路线行驶时。它像这样回来

响应应该为'ok'。我无法弄清楚问题..

标题部分enter image description here

php ajax laravel vue.js single-page-application
1个回答
0
投票
标题似乎不错,为避免这种情况,请在您的网络路由中添加一个条件:

Route::get('/{any}', function () { return view('welcome'); })->where('any', '^(?!api).*');

这应该告诉laravel使用api路由。
© www.soinside.com 2019 - 2024. All rights reserved.