ziba
3 سال پیش توسط ziba مطرح شد
17 پاسخ

2 بار ذخیره شدن داده

سلام
من فرم ارسال کامنت رو با ajax انجام داده ام وقتی button رو میزنم 2 بار ارسال انجام میشه و تو پایگاه داده 2 بار ذخیره میشه
این مشکل رو چطور برطرف کنم


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

کد های کنترلر و قسمتی که درخواست Ajax رو میفرستی به اشتراک بگذار


مهرداد
@mehrdadroshanraee69 3 سال پیش مطرح شد
0

@ziba.varmaziari
بجای create تو کنترلر از firstOrCreate نمیشه استفاده کنی ؟


ziba
@ziba.varmaziari 3 سال پیش آپدیت شد
0
$('.send-comment').click(function
event.preventDefault();  
var name = $('#name').val();  
var email = $('#email').val();  
var comment = $('.comment').val();  
var id = $('.send-comment').attr('data');  
$.post('new-comment', {comment:comment , id:id,email:email , name:name}, function ($result, $status) {  
if($result ==1)  
{  
$(".send-comment").after("دیدگاه شما ثبت شد و پس از تایید مدیران نمایش داده می شود.");  
$('.comment').val("");  
}  
else  
{  
$("#posted").text("خطا در اتصال به دیتا بیس,صفحه را لود کنید و دوباره امتحان کنید");
    }
});

});


Route::post('/product/new-comment','ProductController@postNewComment');

public function postNewComment()  
{

    $user = Auth::user();
    if ($user == null) {
        return redirect(url('/register'));
    } elseif ($user != null) {
        $comment = new Comment();
        $comment->content = Request::input('comment');
        $comment->name = Request::input('name');
        $comment->email = Request::input('email');
        $comment->user_id = Auth::User()->id;
        $comment->product_id = Request::input('id');
        $comment->status = 0;
        $comment->save();
        return 1;
    }
}

@mehrdadroshanraee69


آرش تقوی
تخصص : برنامه نویس فول استک
@arash.taghavi69 3 سال پیش مطرح شد
0

توی inspect element و توی تب network چک کنید که وقتی دکمه ی سابمیت رو میزنید یه درخواست ارسال میشه یا دو درخواست


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0

@arash.taghavi69
دقیقا 2 تا درخواست میره


آرش تقوی
تخصص : برنامه نویس فول استک
@arash.taghavi69 3 سال پیش مطرح شد
0

کد html تون رو هم قرار بدین


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0
 @if (Auth::User())
            <div>
        <div class="form-group clearfix">
            <label class="col-xs-12 col-sm-12 col-md-12 col-lg-2" for="name">نام</label>
            <input readonly class="col-xs-12 col-sm-12 col-md-12 col-lg-4" name="name" id="name" value="{{$User->name}}">
        </div>
        <div class="form-group clearfix">
            <label class="col-xs-12 col-sm-12 col-md-12 col-lg-2" for="email">ایمیل</label>
            <input readonly class="col-xs-12 col-sm-12 col-md-12 col-lg-4" name="email" id="email" value="{{$User->email}}">
        </div>

        <div class="form-group clearfix">
        <label class="col-xs-11 col-sm-11 col-md-11 col-lg-2" for="comment">دیدگاه</label>
        <textarea class="col-xs-11 col-sm-11 col-md-11 col-lg-9 comment" name="comment" id="comment" rows="6"></textarea>
            <span class="required">*</span>
        </div>
                                        <button data="{{$Product->id}}" class="btn btn-wide btn-success send-comment">ارسال دیدگاه</button>
                                        <p id="posted"></p>
            </div>
        @else

                                    <div style="align-items: center;
    display: flex;
    flex-direction: column;
    margin: auto;">
                                    <p style="margin-bottom: 13px;
                                        font-weight: 900;
                                        font-size: 17px;">برای ثبت دیدگاه لطفا به فروشگاه وارد شوید</p>
                                        <a style="width: 10px;margin: auto;" class="btn btn-wide btn-warning center" href="{{url('login')}}"  class="btn btn-primary alone" >
                                            {{ __('ورود به حساب کاربری') }}
                                        </a>

                                    </div>
                                    @endif

    </div>
@arash.taghavi69

آرش تقوی
تخصص : برنامه نویس فول استک
@arash.taghavi69 3 سال پیش مطرح شد
0

اون قسمت preventDefault لازم نیست میتونید برش دارید.
بالا preventDefault این کد رو قرار بدین و موقع سابمیت کردن فرم توی کنسول چک کنید ببینید دوبار چاپ میشه یا یکبار

console.log('aaa')

مهرداد
@mehrdadroshanraee69 3 سال پیش مطرح شد
0

من نمونه کد خودمو میذارم ببینید میتونید با این مشکل رو حل کنید

@auth
<div class="box">
    <div class="box-body">
          <div class="widget">
            <h4 class="mt-0 pb-15 mb-25 bb-1">ارسال دیدگاه</h4>
                <input type="hidden" name="parent_id" >
                <div class="col-lg-12 col-md-12">
                    <div class="form-group">
                        <textarea class="form-control btn--comments-reply" id="mytextarea" name="body" rows="7"
                         placeholder="دیدگاه مد نظر شما "></textarea>
                    </div>
                </div>
                <div class="col-lg-12 col-md-12">
                    <button  id="ajax-sub" class="btn btn-primary">
                        <span>ارسال دیدگاه</span>
                    </button>
                </div>
          </div>
    </div>
</div>
@endauth
<script>
    $(document).ready(function(){
        $('.replyComment').on('click' , function () {
            let id = $(this).attr('data-commentID');
            $('input[name="parent_id"]').val(id);
        });
        $('#ajax-sub').click(function(e){
            // e.preventDefault();
            if($("#mytextarea").val().length == 0){
                Swal.fire({
                    title: 'خطا',
                    text: 'متن دیدگاه کوتاه است',
                    icon: 'error',
                    confirmButtonText: 'بسیار خوب',
                    animation : true,
                    timer: 5000
                })
            }
            $.ajax({
                url: "{{route('comment.article' , $article->id)}}",
                method: 'post',
                data: {
                    body: $('#mytextarea').val(),
                    parent_id: $('input[name="parent_id"]').val(),
                    _token: "{{ CSRF_TOKEN() }}"
                },
                success: function(result){
                    document.getElementById("mytextarea").value = "";
                    $('input[name="parent_id"]').val('');
                    Swal.fire({
                        title: 'با تشکر',
                        text: 'دیدگاه شما با موفقیت ارسال شد و پس از بررسی و تایید  توسط مدیر  وبسایت منتشر خواهد شد ',
                        icon: 'success',
                        confirmButtonText: 'بسیار خوب',
                        animation : true,
                        timer: 5000
                    })
                }});

        });
    });
</script>
    public function articleComment(Article $article , Request $request)
    {
        $article->comments()->create([
            'body' => $request->body,
            'user_id' => auth()->id(),
            'parent_id' => $request->parent_id,
        ]);

        return response()->json(['success' => 'عملیات با موفقیت انجام شد']);
    }

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

@ziba.varmaziari

public function postNewComment()  
{

    $user = Auth::user();
    if ($user == null) {
        return redirect(url('/register'));
    } elseif ($user != null) {
        $comment = new Comment();
        $comment->content = Request::input('comment');
        $comment->name = Request::input('name');
        $comment->email = Request::input('email');
        $comment->user_id = Auth::User()->id;
        $comment->product_id = Request::input('id');
        $comment->status = 0;
        $comment->save();
        return 1;
    }
}

این ها داخل فایل web هستند یا api?


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0
ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0

@Rp76
داخل controller هستن


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

@ziba.varmaziari
برام جالب شد بدونم از کجا بهش دسترسی دارید از فایل api یا web
به این کنترلر درخواست ارسال شده؟


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0

@Rp76
بله این کنترولر درخواست post انجام میده


آرش تقوی
تخصص : برنامه نویس فول استک
@arash.taghavi69 3 سال پیش مطرح شد
0

مشکل این هست که ایونت دوبار فراخونی میشه. میتونید ای دی انی دسکتون رو اینجا بگذارید من یا دوستان راهنمایی کنند.(البته اگر این مورد خلاف قوانین سایت نباشه)


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0

@arash.taghavi69
من هرچی تابع در این صفحه مینویسم 2 تا میاره و مشکل از چیه نمیدونم


ziba
@ziba.varmaziari 3 سال پیش مطرح شد
0

@arash.taghavi69
حل شد مسیرشو عوض کردم


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

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