Не удается получить данные от контроллера с помощью запроса ajax

Попытка получить 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
    ]);

Контроллер вот так изменился и сейчас работает.

вы проверили или распечатали свой запрос?

Amit Rajput 01.05.2018 09:41

да, делай то, что сказал @AmitRajput

Toby Okeke 01.05.2018 09:49

запрос возвращает значение null. Не могу получить никаких данных.

Ali Özen 01.05.2018 09:53

Illuminate \ Database \ Eloquent \ Collection Object ([items: protected] => Array ())

Ali Özen 01.05.2018 09:55

@ AliÖzen Вы уверены, что есть продукты с этим category_id? А что будет, если заменить $category_id = $request['category_id'] на $category_id = $request->input('category_id')?

Douwe de Haan 01.05.2018 09:58

Да, я уверен. Это тоже return null.

Ali Özen 01.05.2018 10:08

Пожалуйста, покажите также свою модель Продукт.

Chirag Patel 01.05.2018 10:10

Вам не нужно использовать json_encode для возврата ответа json. Вы можете использовать json-метод ответа laravel по умолчанию. return response()->json([ 'name' => 'Abigail', 'state' => 'CA' ]);

Sumit Parkash 01.05.2018 10:21

@SumitParkash да. Разобрался и решил проблему. Как я писал в разделе редактирования. Спасибо, в любом случае :)

Ali Özen 01.05.2018 10:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
92
1

Ответы 1

Это могло быть связано с рядом причин, во-первых, я не уверен, что это правильный синтаксис $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;

Другие вопросы по теме