簡體   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