تمرین اخر جلسه - گرفتن id و نام فولدر با response ajax
حل شده توسط
kimia
با سلام
جواب تمرین اخر جلسه
برای گرفتن id و نام فولدر در response ajax و قرار دادن آن در لیست فولدرها به صورتیکه با کلیک بر روی فولدر جدید ویا کلیک برای حذف آن همان روال عادی مربوط به لیست فولدرها را داشته باشد.
ابتدا در تابع add folder بعد از insert شدن یک کوئری select ران میکنیم و اطلاعات فولدر جدید را در قالب یک آرایه میگیریم
**** سپس آرایه دریافتی از دیتابیس را در فایل ajax-handler با تابع json-encode تبدیل به یک json میکنیم و آن را response ajax قرار میدهیم .
**** response دریافتی در ajax را که یک json میباشد با تابع JSON.parse به یک ابجکت جاوااسکریپت تبدیل کرده در این صورت ما به تمام اطلاعات مربوط به یک row در جدول فولدر دسترسی درایم .
هر مشخصه را درون یک متغیر میگذاریم و متغییرها درون متن li قرار میدهیم.
با قرار دادن تگ a مربوط به خود فولدر و ایکون حذف آن و قرار دادن folder id در متن مربوط به ایجاد لیست ، یک فولدر ایجاد میشود که همه خصوصیات فولدارهای قبلی را داراست.
نکته دیگر اینکه در روشی که دوستان در پستهای قبلی اشاره کردند یعنی روش اول که با تابع end آی دی فولدر آخر رو بگیریم و در متن با عدد 1 جمع کنیم . اشکالی که وارد هست اینه که امکان داره بعد از فولدر آخر یک فولدر ایجاد و حذف شده باشد که آی دی این فولدر حذف شده در دیتابیس در نظرگرفته میشود و آی دی فولدری که ایجاد میکنیم بعد از آی دی فولدر حذف شده لحاظ میشود. پس این روش میتونه نتایج نادرست بده .
با آرزوی موفقیت
پیمان۰۸ خرداد ۱۴۰۲، ۱۵:۱۶
سلام
بنده از کدهای شما استفاده کردم اما وقتی یه موردی اضافه میکنم به ارور زیر میخورم و اجکس اجرا نمیشه باید صفحه رو رفرش کنم تا اضافه بشه که خیلی گشتم نتونستم دلیلشو پیدا کنم. این ارور رو از کنسول کروم برداشتم . و فکر کنم به json.pars مربوط میشه که استفاده کردید
Uncaught SyntaxError: Unexpected non-whitespace character after JSON at position 76 (line 1 column 77)
at Function.parse [as parseJSON] ()
at Object.success (7todo/?delete_folder=46:111:35)
at c (jquery.min.js:2:25304)
at Object.fireWith [as resolveWith] (jquery.min.js:2:26053)
at l (jquery.min.js:2:77782)
jamal esmaily۰۸ آذر ۱۴۰۲، ۰۹:۳۲
سلام خدمت شما
خطایی که داده یه syntax error هست ...
امکان داره اون متغیری که به تابع parseJSON دادی به صورت ابجکت نباشه .
لطفا یه اسکرین از قسمت ajax که نوشتی و و اون قسمتی که داخل فایل ajax_handler هم اطلاعات فولدر رو گرفتی ... اپلود کن .
من دوباره اون قسمت ajax که نوشتم رو با کیفیت بهتر load می کنم ... چک کن ببین به همین صورت نوشتی ...
پیمان۱۴ آذر ۱۴۰۲، ۱۴:۳۸
با سلام و تشکر از پاسخی که نوشتید
اگر به جای select بعد از دستور insert از تابع lastinsertid استفاده کنیم مشکلی پیش میآید؟
بهترین پاسخ
kimia۱۰ اردیبهشت ۱۴۰۳، ۰۷:۰۰
سلام ...
فکر نکنم مشکلی پیش بیاد برای گرفتن آخرین Id درج شده.... یعنی درصدش خیلی خیلی کمه که مشکل پیش بیاد...
من با این رویکرد select رو انتخاب کردم چون یوزر مورد نظر در اون درج شده و به نظرم احتمال اینکه id فولدور دیگری از یوزر دیگری انتخاب بشه رو به صفر میرسونه ...
منظورم اینه که اگه به صورت همزمان دو تا یوزر متفاوت باهم یه فولدر اضافه کنن (درصدش خیلی خلیی کمه ولی خوب محتمل هست) دیگه اشتباهی صوررت نمیگیره ...