Как получить результат с контроллера, используя ajax и multi checkbox - PullRequest
0 голосов
/ 17 июня 2019

Как я могу получить результаты от ajax, используя массив значений из флажков Я новичок в Laravel и ajax, я пытаюсь создать фильтр для отображения некоторых данных, используя флажки, в этом коде, который я пытался реализовать, он показываеттолько значение флажка вместо того, чтобы показывать результаты из контроллера, пожалуйста, мне нужна помощь в ajax и controller, чтобы решить эту проблему. Я получил этот код из другого вопроса о stackoverflow, но что-то не хватает, я не знаю, где это точно

Blade

@foreach
    <div class="custom-radio">
        <input type="checkbox"  class="batchCheckbox" name="batch[]" value=" {{$item->indivgroup_option}}">
        <label>
            <span>
                {{ ($item->indivgroup_option =='i')?"Individual Tour":"Group Tour" }}
            </span>
        </label>
    </div>
@endforeach  

JQuery

var categories;
var getfilters = function () {
    $.ajax({
        type: 'POST',
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        url:'{{URL::to('offer-category')}}',
        data: {categories: categories},
        error: function(e) {
            console.log(e.responseText);
        },
        success: function (data) {
            console.log(data);
            $('#myResponse').html(data);
        }
    });
};


$(document).ready(function() {
    $('input[type="checkbox"]').on('change', function(event) {
        event.preventDefault();
        categories = $("input:checkbox:checked").map(function(){
            return $(this).val();

        }).get();

        $('#myResponse').html(categories.toString());
        getfilters();
    });
});

Контроллер

public function getoffergroup(Request $request)
{

    $input  = array(Input::get('categories'));
    $posts=Offer::whereIn('indivgroup_option' , $input)->get();
    $categories = Category::getGroup();
    return response()->view('offer.archive', compact('offers', 'categories'));
}

1 Ответ

0 голосов
/ 17 июня 2019

HI, попробуйте это, чтобы получить проверенное значение из флажка. Надеюсь, это поможет

<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
<input type="checkbox" name="batch" value="1">
<input type="checkbox" name="batch" value="2">
<input type="checkbox" name="batch" value="3">
<input type="checkbox" name="batch" value="4">
<input type="checkbox" name="batch" value="5">

<script type="text/javascript">
    var categories = [];
    var getfilters = function () {
        console.log(categories);
  $.ajax({
            type: 'POST',
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },

            url:'{{URL::to('offer-category')}}',

            data: {categories: categories},
            error: function(e) {
                console.log(e.responseText);
            },
            success: function (data) {
                console.log(data);
                $('#myResponse').html(data);
        }});
    };


    $(document).ready(function() {
        $('input[type="checkbox"]').on('click', function(event) {
           event.preventDefault();
            $.each($("input[name='batch']:checked"), function(){            
                categories.push($(this).val());
            });

        $('#myResponse').html(); // <---- 'one,two,three;
             getfilters();
        });
    });
</script>

---------- Контроллер получает данные и возвращает данные в ajax -----

    public function getoffergroup(Request $request)
{
    $categories = $request->categories; // this is use for get request, if you are getting single value make lopp for single like :

    $posts = Offer::whereIn('indivgroup_option' , $categories)->get();

    // if you resturn result in ajax use this for 

    $categories = Category::getGroup();

    if (!empty($posts)) {
        return response()->json([
            'status'=>200,
            'message'=>"sussfully get data",
            "data" =>$posts // if you return any data in ajax use this 
            "key"=>"value" // value mean data  
        ]);
    }else{
        return response()->json([
            'status'=>404,
            'message' => "no data found"
        ]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...