Русское сообщество разработки на 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