无法从带有ajax请求的控制器获取数据

时间:2018-05-01 07:39:52

标签: php arrays ajax laravel eloquent

尝试使用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个对象。问题出在哪儿?提前谢谢。

编辑:

我在尝试返回$ urunler时获得Cannot read property 'length' of undefined;

$category_id = $request['category_id'];无法得到任何想法。 例如,如果我更改$category_id = 5 return [object Object],[object Object] 我有2个$category_id = 5对象。 这里有问题吗? $category_id = $request['category_id'];

EDIT2:

$category_id = $request->get('category_id');
    $urunler = Product::whereCategoryId($category_id)->get();

    return response()->json([
        'urunler' => $urunler
    ]);

控制器改变了这样,现在正在工作。

1 个答案:

答案 0 :(得分:0)

这可能是由于多种原因首先我不确定这是否是正确的语法$request['category_id'];,但我可能错了。我大部分时间都使用`$ request-&gt; 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.logkategori_id

最后laravel默认返回一个json,所以你实际上不需要这样做,只有在有进一步的理由时才会这样做。

你可以替换这个:     return json_encode([ 'urunler' => $urunler ], JSON_UNESCAPED_UNICODE);

有了这个:

return $urunler;