Функция AJAX всегда возвращает HTML-код в ответ на успех - PullRequest
2 голосов
/ 20 мая 2019

В проекте laravel 5.8 я пытаюсь использовать функцию JQuery AJAX для отправки запроса get на один из маршрутов проекта, URL-адрес имеет статус ответа 200, что означает, что запрос выполнен успешно, но каждый раз, когда функция возвращает текущее представление HTML вответ

Я попытался удалить весь код в моей функции php и вернуть только ответ JSON, но при этом получить HTML. Я также попытался изменить тип данных на JSON или текст и установить кэш на false, но ответ по-прежнему тот же.Я даже пытался прокомментировать все функции, запрашиваемые маршрутом, и всегда получался один и тот же ответ. Я также пробовал множество других решений, предлагаемых здесь или на других сайтах, но не смог решить эту проблему

Вот моя функция контроллера, что маршрутзапрос:

public function seen()
{
    $user = User::find(Auth::user()->id);

    $notifications = $user->notification;
    foreach($notifications as $notification){
        $notification->seen = 1;
        $notification->save();
    }

    return response()->json(['status' => 'seen']);
}

Вот маршрут функции:

Route::get('/seen', 'CustomAuth\AuthController@seen')->middleware('authUser');

И, наконец, функция AJAX:

    function seen(){
        let url = '/seen';
        $.ajax({
            type: 'GET',
            url: url,
            success: function (data) {
                console.log(data);
            },
            error: function (data) {
                console.log(data);
            }
        });
    }

Ответ, который я получаю, когда я устанавливаю contenType в текст:

Response Headers

Я ожидаю, что я получу ответ JSON, что я try, чтобы вернуться в функцию, но я полагаю, что запрос не достигает функции, и проблема в запросе ajax

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

попробуйте

function seen(){
    let url = '/seen';   $.ajax({
    url: "getusersallapp",
    type: 'POST',
    dataType: 'json',
    data: {
       '_token': $('input[name=_token]').val()
    },
    }).done(function (data) {
      console.log(result);
    })
    .fail(function (xhr, status, error) {
         console.log(error);
     });
0 голосов
/ 20 мая 2019

Как предположил JCode, проблема была в промежуточном программном обеспечении, добавленном к маршруту.
Как будто case в промежуточном ПО возвращает false, промежуточное ПО перенаправляет на текущую страницу, поэтому возвращает HTML-код страницы в ответе AJAX

0 голосов
/ 20 мая 2019

Попробуйте удалить промежуточное ПО из вашего ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...