(Laravel) Как я могу вернуть переменную в представление .blade.php с помощью AJAX?

-2

Когда пользователь меняет категорию с полем выбора, я хочу показывать только запросы с этой категорией в представлении - и делать это, используя запрос AJAX. Я хочу передать объект, возвращаемый с контроллера контроллера AJAX в представление (переменная $ request, как показано в приведенном ниже коде), и для просмотра, чтобы обновить отображаемые запросы.

Данные возвращаются в обработчик успеха AJAX правильно, так как я могу console.log объект, но он не обновляет переменную $ request.

Как мне это достичь, и чего мне здесь не хватает?

Представление, которое показывает запросы от БД

@extends('layouts.app')

@section('content')

{{-- Requests --}}
<div class="container">
    <div class="row requests-row">
        <div class="col-md-12">
            <h2>New requests</h2>
            <select name="category" class="form-control category">
                <option value="" disabled selected>Choose a category...</option>
                <option value="Electronics and Computers">Electronics and Computers</option>
                <option value="Hardware">Hardware</option>
            </select>
            <hr>
            <p class="block"></p>
            @foreach ($requests as $request)
                @include('components.requests')
            @endforeach
        </div>
    </div>
</div>

@endsection

Запрос AJAX

$('.category').change(function() {
    $.ajax({
        method: "GET",
        url: "/category",
        data: $(this).serialize(),
        success: function(data) {
            console.log(data);
            return data;
        },
        error: function(data){
            console.log("Error: " + data);
        },
    });
});

Контроллер на бэкэнд, который обрабатывает запрос AJAX

public function changeCategory(Request $request)
{
    $posts = Post::where('category', $request->category)->get();
    return $posts;
}
  • 0
    Если вы не ищете сервис для написания кода, могу ли я спросить, чего вы ожидаете от кода, который вы опубликовали? Что вы ожидаете в данный момент в функции обработчика успеха AJAX?
  • 0
    Без ajax вы можете передать значение category на текущую страницу, и зациклить переменную $posts в вашем шаблоне
Показать ещё 1 комментарий
Теги:

2 ответа

1

Платформа template - php, а ajax - с javascript на client side.

Поэтому, если вы хотите отобразить что-то, вам нужно использовать javascript для этого.

Возможно, что-то вроде

success: function(data) {
    var posts = '';
    $.each(data, function(index, post) {
       posts += '<div class="post">' + post.title + '</div>';
    });
    $('.requests-row .col-md-12').prepend(posts);
}
  • 0
    Я подумал, что это был способ сделать это без переписывания кода из шаблона, но, возможно, нет? Любой другой способ достижения этого, о котором вы можете подумать?
0

Может быть, это так?

if($request->ajax()){
    return response()->json(['ajax']);
}
  • 0
    Я пытался »вернуть json_encode ($ запросы), но это ничего не делает. Это то, что вы думали?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню