سلام
من چندین مرتبه با یک مشکل ساده و در عین حال عجیب مواجه شدم. در پروژه های متفاوت در فرم های خیلی ساده برام پیش اومده که چند مرتبه پشت سر هم و حتی گاهی با کمی فاصله زمانی رکورد های تکراری ثبت میشه.
این مشکل تو انواع فرم های خیلی معمولی با زبان php رخ می ده.
آیا شما مشکل مشابهی داشتید؟ یا به فکرتون می رسه از چی باشه؟
ممنون می شم راهنمایی کنید.
چون این مشکل تو یک سورس مشخص رخ نمی ده واسه همین سورس کد نگذاشتم. اگر به نظرتون چیزی نرسید بفرمایید سورس کد یکی از فرم ها رو قرار بدم.
سلام
یکی از دلایل رایجش این هست که کاربر چندبار پشت سر هم و سریع (مثل حالت دابل کلیک) روی دکمه submit فرم کلیک کنه (پیش از اینکه صفحه ریلود بشه)
اینکار باعث میشه چند تا ریکوئست به موازات هم به سمت سرور ارسال و بعد پردازش بشن و نتیجه اش میشه همین قضیه تکراری ثبت شدن چند تا رکورد پشت سرهم. و مشخص ترین راهکارش هم این هست که یا در سمت بک اند جلوی ذخیره رکورد های duplicate رو بگیرید یا مثلا در فرانت اند با javascript جلوی submit مجدد فرم رو در اون بازه زمانی کوتاه بعد از submit و پیش از ریلود صفحه رو بگیرید. یا چک کنه اگر صفحه در حال load شدن بود return کنه...
@mhyeganeh
ممکنه راهنمایی کنید که تو بک و فرانت با چه کدهایی می تونم جلوش رو بگیرم؟
یا اینکه لینکی معرفی کنید که بتونم مطالعه کنم
سلام
این رو مشاهده بفرمایید
https://stackoverflow.com/questions/16715075/preventing-multiple-clicks-on-button
سلام
دقیقا موضوع چیزی هست که دوستمون @mhyeganeh توضیح دادن
دلیل دوبار کلیک کردن کاربره
راه حلش خیلی سادست
من دو تا تابع برای خودم تعریف کردم و ازش استفاده میکنم
function makeButtonLoading(button){
button.attr('old_text',button.text());
button.prop('disabled',true)
button.html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>');
}
function removeLoadingFromButton(button){
button.html(button.attr('old_text'));
button.prop('disabled',false);
}
کاری که میکنم اینه که تا روی دکمه ی submit کلیک میکنم ، دکمه رو غیر فعال میکنم و یک loading داخلش نشون میدم
و چون درخواست هام به صورت ajax هست بعد از اتمام کار در done یا success دکمه رو به حالت قبلش برمیگردونم
حالا شما اگر درخواستت میفرسته شمارو به صفحه ی دیگه ای نیاز به برگشت دکمه نداری دیگ.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟