繁体   English   中英

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

[英]laravel vue SPA page returning HTML instead of json value on ajax request

这是我来自 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' 。 我想不通问题..

标题部分在此处输入图片说明

在不应该有的路线上有一个 dolar 标志。

尝试将 {$email} 更改为 {email}

标题似乎没问题,所以为了避免这种情况,请在您的网络路由中添加一个条件:

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

这应该告诉 laravel 使用 api 路由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM