🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۲ مهران
مشکل درج رکورد با ajax
جامعه پی اچ پی ایجاد شده در ۱۶ مرداد ۱۴۰۲

سلام. زمانی که دارم با ajax رکورد تسک یا فولدر اضافه میکنم توی li یا هر جای دیگه تا زمانی که صفحه رفرش نشه event‌ها روی اون رکورد به عنوان مثال delete یا هر event دیگه که باید روی داینامیک المنت‌ها رخ بده کار نمیکنه میشه لطفا یه راهکار درست به من ارائه بدید که توی این مواقع چگار باید کرد که بشه همه جا ازش استفاده کرد الان مشکلی من دارم اینه که تسک هایی که دارم میگیرم تا زمانی که صفحه رفرش بشه هیچ یک از evrnt هاش کار نمیکنه تحقیق کردم و متوجه شدم مربوط میشه به event delightion اما هر طور نوشتم مشکلم حل نشد ....

سلام،

از روی توضیحات چیزی متوجه نشدم، لطفاً همراه با کد توضیح دهید.

محسن موحد ۱۶ مرداد ۱۴۰۲، ۰۶:۴۲

پروژه را اپلود کردم لطفا برسی کنید هنگامی که تسک ساخته میشه وقتی روی کلید کامل شدن تسک کلیک میکنم یا روی کلید delete تسک میزنم انجام میشه اما همون موقع به کاربر نشون نمیده تا زمانی که کاربر روی قولدر کلیک کنه یا به قولی رفرش بشه چطور این مشکل را باید حل کرد؟

مهران ۱۶ مرداد ۱۴۰۲، ۰۶:۵۲

همینطور برای فولدرها زمانی که با ajax ساخته میشن وقتی روی اونها کلیک کنی هیچ اتفاقی نمیوقته تا زمانی که صفحه رفرش بشه

مهران ۱۶ مرداد ۱۴۰۲، ۰۶:۵۵

سلام،

این پروژه دیتابیس نداره نمیشه تست کرد.

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

  • در مورد addFolder بعد از اضافه شدن بصورت ajax چه کاری باید انجام بشه که با بدون رفرش نمیشود؟ چون شما یک remove فقط قرار دادید که اون هم بصورت link بوده و ajax نیست. اگر منظورتون اینه که روش کلیک نمیشه تا task‌ها نمایش داده بشه و ... بخاطر اینه که li ای که در ajax اضافه میشه class="folder" رو نداره و باید اینرو هم در قسمت success آجاکس addfolder اضافه کنید به تگ li.
  • یه مورد دیگه در مورد addFolder، چرا بعد ازینکه insert کردید بعد از affected rows سلکت کردید؟ شما که تمام داده هایی که اینسرت کردیدو دارید و برای آیدی هم از lastInsertId استفاده میکنید، بنابراین نیاز به select نیست.
  • بررسی بقیه موارد نیازمند فایل sql است.



محسن موحد ۱۷ مرداد ۱۴۰۲، ۰۰:۲۲

ممنون محسن جان بابت وقتی که گذاشتی. من کلاس فولدر را اضافه کردم به li توی success اجاکس اما بازم بعد از ساخت فولدر قابل کلیک نیست و باید حنما رفرش بشه تا قابل کلیک بشه. مورد دوم هم که گفتید من بعد از insert کردن فولدر با ایدی همون فولدر را میگیرم و با اجاکس توی li نمایشش میدم یعنی شما میگی که این کار نیازی نیست و بزارم خوده فولدر توی فرم لود نمایش داده بشه؟؟

مهران ۱۷ مرداد ۱۴۰۲، ۰۶:۱۵

چطور میتونم دیتابیس را بهنون بدم ؟

مهران ۱۷ مرداد ۱۴۰۲، ۰۶:۱۷

اینم دیتابیس به صورت export شده

مهران ۱۷ مرداد ۱۴۰۲، ۰۶:۳۱
  • بعد ازینکه کلاس folder رو اضافه کردید کافیه اولین لاین از متد click در .folder یک alert بگذارید ببینید اصلا وارد این متد میشه یا نه و اگر شد، بقیه خطوط این متد رو چک کنید که ایراد پیدا بشه. که من این کار رو کردم و متوجه شدم showTasksFolderId رو هم داخل span ای که تولید میکنید اشتباه تایپی داشتید.
$(
  "<li class='folder'> <span showTasksFolderId=" +
    folderId +
    '"><i class="fa fa-folder">i>' +
    folderName +
    'span> <a href="?deleteFolder=' +
    folderId +
    '" class="remove">Xa> li>'
).appendTo("ul#folder-list");
  • برای کلاس taskdelete بعد ازینکه تسک حذف میشود فقط پیام می‌آید و با جی کوئری باید li را حذف کنید که چیزی ننوشتید، میتونید قبل از ajax این کد را بنویسید:
var taskdelete = $(this);
// ====//
var taskId = $(this).data("taskid");
// ...

و در داخل success:

if (response == 1) {
    taskdelete.closest("li").remove();
    Swal.fire("Deleted!", "Your task has been deleted.", "success");
}

بقیه ی موارد هم باید به همین طریق اگر چیزی نیاز هست اضافه کنید.

محسن موحد ۱۸ مرداد ۱۴۰۲، ۰۰:۳۷

ممنونم. من تغییرات شما را انجام دادم منتها فرقی در فولدر ندیدم و بازم با رفرش قابلیت کلیک کار میکنه. اما در بقیه موارد تونستم با jquery مشکلات را حل کنم.

مهران ۱۸ مرداد ۱۴۰۲، ۰۹:۱۹

انگار اگه از ajax استفاده بشه کار بیشتر میشه و حالا باید برای نمایش یا حذف ایتمها هم کد بزنی.

مهران ۱۸ مرداد ۱۴۰۲، ۰۹:۲۱

بازم با رفرش قابلیت کلیک کار میکنه منظورتون addFolder هست؟

نحوه دیباگ رو بهتون گفتم، همین دو مورد رو مشکل داشت کد و تست کردم بدون مشکل اجرا شد.

بهترین پاسخ
محسن موحد ۱۸ مرداد ۱۴۰۲، ۱۱:۲۳

بله منظورم addfolder هست یه فولدر بسازید و بدون رفرش روش کلیک کنید کار نمیکنه و لیست تسک‌ها را نمیاره تا زمانی که شما صفحه را رفرش کنید من دیدم کلی هست و میخوام بدونم اینطور موقع‌ها در چنین شرایطی توی برنامه‌های مختلف چکار باید کرد.

مهران ۱۸ مرداد ۱۴۰۲، ۱۲:۳۲

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

محسن موحد ۱۸ مرداد ۱۴۰۲، ۱۲:۴۵