尝试使用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
]);
控制器改变了这样,现在正在工作。
答案 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.log
此kategori_id
最后laravel默认返回一个json,所以你实际上不需要这样做,只有在有进一步的理由时才会这样做。
你可以替换这个:
return json_encode([
'urunler' => $urunler
], JSON_UNESCAPED_UNICODE);
有了这个:
return $urunler;