codex68
3 سال پیش توسط codex68 مطرح شد
1 پاسخ

سوال در مورد json در لاراول

سلام خدمت دوستان
بنده یه سوال تخصصی داشتم با نمونه کد اگه ذکر بشه ممنون میشم از همگی.
تو فروشگاه فیلتر کردن اطلاعات از طریق متد پست با اجاکس در لاراول قیمت و بقیه اطلاعات رو به کنترلر ارسال می کنیم و بعدش از طریق زیر اطلاعات رو بر می گردونیم.
$product = DB::table('products')
->where('reg_price','>=',$_POST["minimum_price"])
->where('reg_price','<=',$_POST["maximum_price"])
->get()->toArray();
return response()->json([$product]);
حالا اطلاعات بر می گرده به همون قسمت که شامل محصولات میشه یعنی محصولاتی که اون این رنج قیمتی هستند بر می گردن که شامل قیمت و نام و بقیه اطلاعات محصول میشه.
چطور از اطلاعات برگشتی استفاده کنیم یعنی چطور می تونیم محصولات رو به صورت اجاکس دوباره تو صفحه نمایش بدیم.
foreach ($product as $key => $Products)
{
$Filter_Products = '<div id="productList" class="col-lg-4 col-md-6 product_ajax">
{
کد بالا رو ببینید البته قسمت محصولات که کد html هستش ر کامل نذاشتم. تو شیوه بالا به صورت اجاکس اطلاعات بر می گرده و تو سایتم نمایش میدم اما فقط با اینکه حلقه foreach هستش فقط 1 دونه محصول رو بر می گردونه و البته کامل و صحیح بر می گردونه اما یه دونه یعنی انگار حلقه رو اولین ارسال توقف پیدا می کنه .
لطفا اگه منظورم رو رسوندم ممنون میشم توضیح رو با کد بهم بدید.


ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

سلام
اول این که لطفا کد رو توی تگ کد از همین ویرایشگر قرار بده ک بشه خوندش
دوم اینکه چون داری ajax میزنی دیگه نمیتونی با php بیایی حلقه بزنی
اون برای زمانی هست که با لاراول متغییر رو به اون صفحه ارسال کنی و وقتی صفحه باز میشه و یا رفرش میشه
هنگام بار گذاری صفحه حلقه اجرا میشه و فقط یکبار اجرا میشه ب صورت کامل و بعد لود شدن صفحه دیگه شما کد php کار نداری
برای حل مشکل که منم این چالش رو داشتم که باید چیکار کنم وقتی میخوام از ajax استفاده کنم
اینه ک بیایی داده هاتو ، داخل خود کنترلر به صورت کامل توی یک ارایه بریزی و بفرستیش توی ajax خود product که بر میگردونی شامل همه ی محصولات هست
اونو به ارایه تبدیل کن بفرستش ب ajax در جواب ajax بیا با جاوا اسکریپت حلقه بزن
نمونه میفرستم ببین
کد داخل کنترلر هست که به صورت آرایه دسته بندی هارو ارسال کردم

    public function get_all()
    {
        $categories=Category::all();
        return $categories->toArray();
    }

و در انتها هم داخل ajax

    //------------------ START  Get Products For Select Box  START ---------------------

    var global_categories={};
    fill_products_selectBox()
    function fill_products_selectBox(){
        $.ajax({
            type:'GET',
            url:'/categories/all',
            success:function (data){

                var options='';
                for(var index in data){
                    global_categories[data[index].id]=data[index].name;
                    options+='<option value="'+data[index].id+'">'+data[index].name+'</option>';
                }
                $('#category_select_box').html(options);
                $("#category_select_box").selectpicker("refresh");

            }
        })
    }
    //------------------ END  Get Products For Select Box  END -------------------------

اگر روابطی هم داشته باشی مجبوری اون داده ها رو توی آرایه کنی در کنارش بعد ارسال کنی
مثل این

    public function get_all()
    {
        $products=Product::all();
        foreach ($products as $product){
            $product['category']=$product->categories->toArray();
            $product['parents']=$product->parents->toArray();
        }
        return $products->toArray();
    }

در کل برای لاراول livewire هست که استفاده میشه به جای ajax که توی سایت اموزشش هست
ولی خب من با ajax انجام دادم ب همین شیوه ک توضیح دادم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام