Как использовать Ajax на Laravel? - PullRequest
0 голосов
/ 20 октября 2019

Я создал код JavaScript для обработки моего поискового запроса с использованием Ajax. Таким образом, мой код определяется следующим образом:

if(document.getElementById('category')){
    document.getElementById('category').addEventListener('click', () => {
        var query = document.getElementById('category').value;
        if(query !== ''){
            var httpRequest = new XMLHttpRequest();
            httpRequest.open('GET', "http://127.0.0.1:8000/category/fetch");
            httpRequest.send();
            console.log(httpRequest);
        }
    });
}

, где мой category из моей формы:

<div class="col s12 m8 l8">
    <input type="text" name="category" value="{{old('category') ?? $book->category ? $book->category->name : ''}}" class="input-field validate" id="category">
    <input type="hidden" name="category_id" value="{{ $book->category ? $book->category->id : ''}}">
</div>

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

public function fetch(Request $request){
    dd("You hit me: ".$request);
    $category = Category::where('name', 'like', $request['category'])->first();
    return response()->json($category);
}

но вернемся к моему JavaScript, Почему мой запрос get не затрагивает мою функцию выборки? делая это вручную в браузере, он дает мне результат , а моя консоль дает мне такой результат:

response: "<script> Sfdump = window.Sfdump || (function (doc)"

, как на картинке ниже. Ajax Request

1 Ответ

0 голосов
/ 20 октября 2019

Отличный вопрос!

Чтобы обеспечить немного контекста, Laravel частично построен из Symfony, другого PHP-фреймворка, и разделяет множество пакетов. Один такой пакет называется var-dumper, и это то, что включает вспомогательную функцию dd в Laravel.

Взгляните на этот пример, взятый прямо из вспомогательного пакета dd:

//...
<script>
Sfdump = window.Sfdump || (function (doc) {
//...

Источник

Выглядит знакомо? Если вы просмотрели исходную страницу, которая, по вашему мнению, работает в браузере вручную, вы увидите точно такой же код. Оказывается, то, что вы видите в своем AJAX-запросе, в конце концов является правильным - это просто необработанный HTML-контент, который не был преобразован браузером.


Если вы хотите выводить не-dd-контент(например, без разметки тегов сценария и прочего), попробуйте использовать встроенный в PHP метод die('Your message') (только для отладки!) или просто придерживайтесь встроенных методов Laravel response()->json.

Надеюсь, это поможет!

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