Не удается получить данные от контроллера с помощью запроса AJAX - PullRequest
0 голосов
/ 01 мая 2018

Пытается получить products от productController с category_id

Как видно удар. Коды являются базовыми AJAX-кодами, сложных вещей нет. Но мой результат всегда нулевой.

ROUTE

Route::post('urun-listele', 'ProductController@listele');

CONTROLLER

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.log(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
    ]);

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

1 Ответ

0 голосов
/ 01 мая 2018

Это может быть связано с несколькими причинами, во-первых, я не уверен, что это правильный синтаксис $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.log(response) // this should hold a nice error message
}

Таким образом, убедитесь, что вы действительно публикуете данные в своем посте ajax, просто console.log this kategori_id

Наконец-то laravel уже возвращает json по умолчанию, так что вам на самом деле не нужно это делать, только если есть дополнительные причины для этого.

Вы можете заменить это: return json_encode([ 'urunler' => $urunler ], JSON_UNESCAPED_UNICODE);

С этим:

return $urunler;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...