Попытка получить products из productController с помощью category_id
Как видно удар. Коды - это базовые коды запросов ajax, здесь нет ничего сложного. Но мой результат всегда нулевой.
МАРШРУТ
Route::post('urun-listele', 'ProductController@listele');
КОНТРОЛЛЕР
public function listele(Request $request)
{
$category_id = $request['category_id'];
$urunler = Product::where('category_id', $category_id)->get();
#var_dump($urunler);
return json_encode([
'urunler' => $urunler
], JSON_UNESCAPED_UNICODE);
}
AJAX
function urunListele(kategori_id) {
var kapsayici = $('#product-info');
$.ajax({
url: 'urun-listele',
type: "POST",
data: {category_id: kategori_id},
dataType: 'json',
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
},
success: function (data) {
var urunler = data['urunler'];
for (var i = 0; i < urunler.length; i++) {
kapsayici.append('<div class = "col-md-3 product-detail-item b-white br-10px"><p>' + urunler[i]['title'] + '</p></div>');
}
}
});
}
Как я уже сказал, не могу получить никаких данных.
var urunler = data['urunler'];
for (var i = 0; i < urunler.length; i++) {
kapsayici.append('<div class = "col-md-3 product-detail-item b-white br-10px"><p>' + urunler[i]['title'] + '</p></div>');
}
console.info(urunler); всегда возвращает 0 объектов. В чем проблема? Заранее спасибо.
Обновлено:
я получил Cannot read property 'length' of undefined при попытке вернуть $ urunler;
$category_id = $request['category_id']; ничего не может понять.
Например, если я заменю $category_id = 5, он станет return [object Object],[object Object].
У меня есть 2 объекта с $category_id = 5.
здесь проблема? $category_id = $request['category_id'];
РЕДАКТИРОВАТЬ2:
$category_id = $request->get('category_id');
$urunler = Product::whereCategoryId($category_id)->get();
return response()->json([
'urunler' => $urunler
]);
Контроллер вот так изменился и сейчас работает.
да, делай то, что сказал @AmitRajput
запрос возвращает значение null. Не могу получить никаких данных.
Illuminate \ Database \ Eloquent \ Collection Object ([items: protected] => Array ())
@ AliÖzen Вы уверены, что есть продукты с этим category_id? А что будет, если заменить $category_id = $request['category_id'] на $category_id = $request->input('category_id')?
Да, я уверен. Это тоже return null.
Пожалуйста, покажите также свою модель Продукт.
Вам не нужно использовать json_encode для возврата ответа json. Вы можете использовать json-метод ответа laravel по умолчанию. return response()->json([ 'name' => 'Abigail', 'state' => 'CA' ]);
@SumitParkash да. Разобрался и решил проблему. Как я писал в разделе редактирования. Спасибо, в любом случае :)






Это могло быть связано с рядом причин, во-первых, я не уверен, что это правильный синтаксис $request['category_id'];, но я могу ошибаться. Я чаще всего использую `$ request-> category_id.
Во-вторых, не могли бы вы рассказать нам, есть ли здесь актуальные данные:
$category_id = $request['category_id'];
$urunler = Product::where('category_id', $category_id)->get();
Просто dd($category_id) и dd($urunler) и расскажите нам о результатах.
Кроме того, у вас есть метод успеха в вашем запросе ajax, но нет метода ошибки, не могли бы вы добавить его и также предоставить нам результаты?
Сделайте что-нибудь вроде этого после вашей успешной функции:
error: function(response) {
console.info(response) // this should hold a nice error message
}
Таким образом, убедитесь, что вы действительно публикуете данные в своем сообщении ajax, просто console.info этот kategori_id
Наконец, laravel уже возвращает json по умолчанию, поэтому вам на самом деле не нужно этого делать, только если для этого есть другая причина.
Вы можете заменить это:
return json_encode([
'urunler' => $urunler
], JSON_UNESCAPED_UNICODE);
С этим:
return $urunler;
вы проверили или распечатали свой запрос?