 Laravel по-русски
Laravel по-русски
      
      
    Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Доброго времени суток.
Столкнулся с проблемой. Получаю получаю через ajax json, приходит объект.Как распечатать его?
Отправляю и получаю json
    $('#filter_template').change(function() {
        $.ajax({
            type: 'post',
            dataType: 'json',
            url: 'http://demo.app/admin/api/filters',
            data: {
                cat_id: $('#filter_template').val()
            },
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            },
            success: function(jsondata){
                $.each(jsondata, function(i, value) {
                    $('#results').find('#list').append($('<li>')).text(i.name)
                });
                console.log(jsondata);
            }
        });
    });Вот функция которая отдает json
    public function getCatID(Request $request)
    {
        $cat_id = $request->input('cat_id');
        $filter_data = FilterGroup::with('filters')->where('category_id',$cat_id)->get();
        $filter_data->toArray();
        return response()->json($filter_data);
    }
Не в сети
Мне бы на jquery пример с функцией each()
 Мастер
Мастер Писарь
Писарь
						как народ обленился уже...
Не в сети
Совершенно не понял что вам нужно.
у вас же в келбеке success идет итерация по jsondata
Не в сети

Совершенно не понял что вам нужно.
у вас же в келбеке success идет итерация по jsondata
Кстати да )
$.each(jsondata, function(i, value)
Только вот тут лажа
> text(i.name)
Согласно документации
http://api.jquery.com/jquery.each/
i = indexInArray
.name от него не может быть
Не в сети
Кстати да )
$.each(jsondata, function(i, value)
Только вот тут лажа
> text(i.name)
Ну не то чтобы безвыходная ситуация) нужна заменить i на value
 text(value.name)
Да и строка $('#results').find('#list').append($('<li>')).text(i.name), если #list это уникальный айдишник, зачем делать find?
Изменено yuraoff (26.05.2016 20:18:13)
Не в сети
как народ обленился уже...
Причем тут лень? Что мне поделать, если я аяксом плохо владею, а гугл толком нормальных ответов не выдает.
Совершенно не понял что вам нужно.
у вас же в келбеке success идет итерация по jsondata
Хочу сделать примерно это, только на jquery
<ul class="list-inline">
                                @foreach($filter_group as $group)
                                    <li class="col-sm-4 text-center">
                                        <label for="filters">{{ $group->name }}
                                            {!! Form::select('filters[]',$group->filters->lists('name','id'),null) !!}
                                        </label>
                                    </li>
                                @endforeach
                            </ul>Почти получилось. Теперь только не могу сделать так, что бы возле названия группы фильтров, был список с его фильтрами.
$('#filter_template').change(function() {
        $.ajax({
            type: 'post',
            dataType: 'json',
            url: '{{ url('admin/api/filters') }}',
            data: {
                cat_id: $('#filter_template').val()
            },
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            },
            success: function(jsondata){
                $.each(jsondata, function(i, value) {
                    var output = "<li class=\"col-sm-4 text-center\">" + "<label>" + value.name + "</label>" + "</li>";
                    $('#results').append(output);
                    $.each(value.filters, function(i, filter) {
                        var select = "<select id=\"filterselect\" name=\"filters[]\">" + "</select>";
                        $('#results').find('li').append($('<option>'),{value: filter.id, text: filter.name});
                        console.log(value.name + ':' + filter.name);
                    });
                });
            }
        });
    });В консоле все правильно
Количество ядер процессора:2
Количество ядер процессора:4
Количество ядер процессора:8
Оперативная память:2гб
Оперативная память:4гб
Оперативная память:8гб
Оперативная память:16гб
Год выпуска:2016
Год выпуска:2015
Год выпуска:2014Помогите пожалуйста кто jquery хорошо знает

Причем тут знания jquery
Это же логика элементарная
>var select = "<select id=\"filterselect\" name=\"filters[]\">" + "</select>";
Создал строку с селектом - молодец
Дальше то что? ее наверное куда-то вставить надо?
>$('#results').find('li').append($('<option>'),{value: filter.id, text: filter.name});
Читай что делаешь:
1) $('#results') = нашли элемент с id=results
2) find('li') Нашли внутри него элементы li
3) .append($('<option>') Добавили в них элементы  option
Не в сети
 Мастер
Мастер Писарь
Писарь
						Виталь, ты отработал, а ЗП упадёт Алексу 
Alex-01, DOM модельку изучить сложно и на ней на лету делать? 
Ты либо вопрос не правильно поставил либо так правильно, что я аплодирую ))
Не в сети
Причем тут знания jquery
Это же логика элементарная>var select = "<select id=\"filterselect\" name=\"filters[]\">" + "</select>";
Создал строку с селектом - молодец
Дальше то что? ее наверное куда-то вставить надо?>$('#results').find('li').append($('<option>'),{value: filter.id, text: filter.name});
Читай что делаешь:
1) $('#results') = нашли элемент с id=results
2) find('li') Нашли внутри него элементы li
3) .append($('<option>') Добавили в них элементы option
Так я вот и не знаю, как бы теперь эту переменную 'var select' впихнуть, что бы она встала после '<label>" + value.name +'
Виталь, ты отработал, а ЗП упадёт Алексу
Alex-01, DOM модельку изучить сложно и на ней на лету делать?
Ты либо вопрос не правильно поставил либо так правильно, что я аплодирую ))
Я еще бездарь в этом, так что нет ни какой зп)
Виталь, ты отработал, а ЗП упадёт Алексу
Alex-01, DOM модельку изучить сложно и на ней на лету делать?
Ты либо вопрос не правильно поставил либо так правильно, что я аплодирую ))
Вопрос изначально который был задан, уже исчерпан.
Дабы было понятно, покажу что я хочу сделать.
При выборе категории из списка, на сервер отправляется ее id, и прилетают все группы фильтров вместе с фильтрами которые к ней относятся.
На php это выглядит так
<ul class="list-inline">
    @foreach($filter_group as $group)
        <li class="col-sm-4 text-center">
            <label for="filters">{{ $group->name }}
                {!! Form::select('filters[]',$group->filters->lists('name','id'),null) !!}
            </label>
        </li>
    @endforeach
 </ul>Но это я просто тупо все группы фильтров передал в вьюху.
Хочу что бы такая красота, при выборе селекта отрисовывалась на аяксе.
И проблема на которой я сейчас остановился, это как вписать долбанный селект с фильтрами, после названия группы фильтров

Виталь, ты отработал, а ЗП упадёт Алексу
Так я решения не дал готового. Считаю, это вредно  )
)
Просто хочется как-то намекнуть, что кроме тупой копипасты есть  еще  моСК и логика.. Имя пользоваться полезно.
Не в сети

>Хочу что бы такая красота, при выборе селекта отрисовывалась на аяксе.
Не шаришь в ява-скрипте, возвращай не жысон и отрендеренный кусок шаблона 
Блока <ul class="list-inline"> например
И заменяй его на странице
Не в сети
Спасибо всем кто направил меня на истинный путь и помог) все сделал)
<script type="text/javascript">
    $('#filter_template').change(function() {
        $.ajax({
            type: 'post',
            dataType: 'json',
            url: '{{ url('admin/api/filters') }}',
            data: {
                cat_id: $('#filter_template').val()
            },
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            },
            success: function(jsondata){
            	$.each(jsondata, function(index, filter_group) {
                    var li = "<tr><td>" + filter_group.name + "</td></tr>";
                    var select = "<td><select name=\"filters[]\" id=\"filters" + filter_group.id + "\"></td>" + "</select>";
                    var group = $('#results').append($(li).append(select));
                    $.each(filter_group.filters, function(index, filter){
                        group.find($('#filters' + filter_group.id)).append($("<option></option>", {value: filter.id, text: filter.name}));
                    })
            	});
            }
        });
    });
</script>Страницы 1