علیرضا حسینی
5 سال پیش توسط علیرضا حسینی مطرح شد
0 پاسخ

مشکل عدم ارسال دیتا در Ajax

سلام دوستان بنده قصد ارسال کد تخفیف به سمت کنترولر هستم و اخطاری مبنی بر $.ajax is not a function دریافت میکردم در کنسول و متوجه شدم که از نسخه slim جی کوءری استفاده میکردم. نسخه کامل اون رو دانلود کردم و کدهارو به این شکل دراوردم زمانی که فیلد خالی هستش خب اخطار کد تخفیف خالی هست رو میده اما وقتی کلمه ای رو ارسال میکنم هیچ عملی صورت نمیگیره ؟؟؟ این کد های html , وبعدیش هم کدهای ajax پیشاپیش از کمکتون ممنونم!

            <div class="d-flex justify-content-between align-items-center mt-2 mb-3 border rounded px-3 pt-3 pb-2">
                                    <h6>قیمت این محصول :</h6>
                                    <span class="unitprice-discount">- تخفیف : <span></span></span>
                                    <h6 class="price">{{ $article->price }}</h6>
                                </div>
                                <div class="sum-buy--style">
                                    <div class="pay">
                                        <div class="discount-buy d-flex">
                                            <span class="sum ml-2">تخفیف مورد نظر :</span>
                                            <span class="total-discount" id="sum--price">0</span>
                                        </div>
                                        <hr>
                                        <div class="sum-buy d-flex">
                                            <span class="sum ml-2">جمع کل :</span>
                                            <span class="total-price" id="sum--price"></span>
                                        </div>
                                    </div>
                                </div>
                                <div class="discount--style d-flex my-3">
                                    <input type="hidden" name="discount" data-value="" value="">
                                    <span class="text-danger" id="message"></span>
                                    <input type="text" class="discount-code" placeholder="Your Discount Code ..." value="">
                                    <button type="button" class="discount-button">محاسبه</button>
                                </div>
    <script>
        $(document).ready(function(){

            var price = $('.price').text();
            $('.total-price').text(price);
            var total = $('.total-price').text();

            $('.discount-button').click(function(){

                var Data = new FormData();
                var token = "{{ csrf_token() }}";
                var code = $('.discount-code').val();
                console.log(code);
                Data.append('_token',token);
                Data.append('code',code);

                $.ajax({
                    url: '{{ action('HomeArticleController@discount') }}',
                    type:'POST',
                    data: Data,
                    processData: false,
                    contentType:false,
                    success:function(data) {
                        console.log(data);
                        var code = data.code;
                        var discount = data.percent;
                        var inputDiscout =  $('input:hidden[name=discount]');
                        var sumPrice = $(total);
                        $(inputDiscout).val(code);

                        totalprice = parseInt(sumPrice) * (discount / 100);
                        $(inputDiscout).attr('data-value',totalprice);
                        $(total).text(sumPrice-totalprice);

                        var totalDiscount = $('.total-discount');
                        totaldis = parseInt($(totalDiscount).text()) + totalprice;
                        $(totalDiscount).text(totaldis);

                        for(var i = 0 ; i < price.length ; i++) {
                            dis = $(price[i]);
                            totaldis = parseInt($(dis).text()) * (discount / 100);
                            $(dis).siblings().filter($('.unitprice-discount')).css('display','block')
                                .find('span').text(totaldis);
                        }
                        $('#message').text('Discount Code accept');
                    },
                    statusCode: {
                        404: function() {
                            $('#message').text('کد تخفیفی یافت نشد.')
                        },
                        422: function(){
                            $('#message').text('فیلد کد تخفیف خالی است.')
                        }
                    }
                });
            });
        });
    </script>

روت مربوطه :

$this->post('/discount' , 'HomeArticleController@discount')->name('discount-ajax');

و این هم کنترولر و متد :

    public function discount(Request $request){
        $this->validate($request , [
            'code' => 'required',
        ]);

        $discount = Discount::where('name' , $request->input('code'))->first;

        if (is_null($discount)){
            return response([
                'code' => 'چنین کد تخفیفی وجود ندارد'
            ] , 404);
        }

        return [
            'code' => $discount->name,
            'percent' => $discount->percent
        ];
    }

ثبت پرسش جدید

به همدیگه کمک کنیم

به علیرضا حسینی کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

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

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