JBolouri
4 سال پیش توسط JBolouri مطرح شد
3 پاسخ

نمایش تصویر جدید پس از آپلود با ajax

سلام دوستان..

با استفاده از ajax تصویر جدید پروفایل رو آپلود میکنم..
آدرس فایل با اسمی که میخوام توی دیتابیس سیو میشه، فقط نکته ای که هست فایل تصویر پروفایل کاربر همیشه اسمش ثابته توی دیتابیس و فایل جدید با اون اسم روی قبلی سیو میشه..

بعدش که عملیات تموم میشه میخوام تصویر جدید رو توی دو سه تا تگ img بارگزاری کنم...

اینم کد ajax اون بخشی که موفقیت آمیزه عملیات:

 success:function(data){

                        image.src="{{ asset('http://dl.testdomain.com/'.Auth::user()->image_addr) }}";

                        smallScreenUserMenuProfileImage.src="{{ asset('http://dl.testdomain.com/'.Auth::user()->image_addr) }}";
                        sidebarProfileImage.src="{{ asset('http://dl.testdomain.com/'.Auth::user()->image_addr) }}";
                        $('#upload').html('<i class="fas fa-cloud-upload-alt ml-2"></i>آپلود').removeClass('disabled');
                        btnUploadImage.style='display: none';
                        fileInput.value='';
                        fileInputLabel.innerText='تصویری انتخاب نشده!';
                        imageInputBlock.style=""

                        @if((Auth::user()->image_addr) != 'back/img/Default_Profile_Image.jpg')
                            btnDeleteImage.style='display: block';
                        @endif
                    }

ولی نمیدونم چرا تصویر قبلیه لود میشه نه جدیده، یه جورایی چون اسم و آدرس یکی هست انگار از کش مرورگر استفاده میکنه برای لود..

به محض اینکه صفحه رو ریفرش میکنم عکس جدیدم رو نشون میده ولی من نمیخوام ریفرش کنم میخوام بعد از پایان عملیات سریع جدیده رو نشون بده..

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

  image.src="{{ asset('http://dl.testdomain.com/'.Auth::user()->image_addr) }}";

ممنون میشم راهنماییم کنید..


ثبت پرسش جدید
ناصر شرافتی نیا
@Naser.SherafatiNia 4 سال پیش مطرح شد
1

سلام بعد آپلود تصویر، با کد جاوا اسکریپت آدرس آواتار رو به همراه پارامتر زمان درخواست کنید، اینجوری مرورگر دیگه از کش نمیخونه

image.src='http://dl.testdomain.com/' + image_address + '?' + new Date().getTime();

برای دریافت مجدد اطلاعات کاربر از Auth::user() شما باید یک api با ajax فراخوانی کنی که در سمت سرور اطلاعات Auth::user رو در قالب json به شما برگشت بده

public function user()
    {
        $user = Auth::user();
        return response()->json([
            'user' => $user
        ]);
    }

JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

سوال دومم اینه که چجوری میتونم بعد از اتمام عملیات ajax بالا اطلاعات

Auth::user()

رو آپدیت کنم؟

چون یه سری فیلدای این کاربر لاگین شده بعد از این عملیات بالا آپدیت میشه که نیاز دارم وقتی تصویرم آپلود شد تو همون success اون اطلاعات آپدیت شده اون فیلدا رو تو ویوو داشته باشم.. بدون اینکه بخوام صفحه رو ریفرش کنم..


ناصر شرافتی نیا
@Naser.SherafatiNia 4 سال پیش مطرح شد
1

سلام بعد آپلود تصویر، با کد جاوا اسکریپت آدرس آواتار رو به همراه پارامتر زمان درخواست کنید، اینجوری مرورگر دیگه از کش نمیخونه

image.src='http://dl.testdomain.com/' + image_address + '?' + new Date().getTime();

برای دریافت مجدد اطلاعات کاربر از Auth::user() شما باید یک api با ajax فراخوانی کنی که در سمت سرور اطلاعات Auth::user رو در قالب json به شما برگشت بده

public function user()
    {
        $user = Auth::user();
        return response()->json([
            'user' => $user
        ]);
    }

JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

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

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