تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ علیرضا دهکار
نوع دیگه پیاده سازی عملیات‌های ajax پروژه TaskManager
لقمان آوند حل شده توسط لقمان آوند

سلام

استاد من تغییری در روش بررسی عملیات‌های ajax ایجاد کردم ممنون میشم بررسی کنید و نظرتون رو بگید برای بهتر شدن این کد

 

شما از سویچ استفاده کردین برای هندل کردن درخواست‌های ajax که فکر میکنم در پروژه‌های بزرگ اینکار جالب نباشه و برنامه نویس باید هی بیاد تو این فایل بلاک جدید به سویچ اضافه کنه و دستوراتش رو بنویسه، بررسی درخواست‌های ajax از طریق تابع بنظرم راحت‌تر هست

 

من به اینصورت عمل کردم که هنگام ارسال درخواست سمت فایل ajaxHandler به همراه دیتا نام یک تابع رو بهش میدم و اونجا بررسی میشه که آیا action ارسال شده قابل صدا زدن هست یا ن، اگر نبود که خطای درخواست نامعتبر ارسال میشه در غیر اینصورت نیتجه درخواست از تابع که اسم اون در action ست شده دریافت میشه

 

البته این مورد بسیار جای توسعه داره و میشه عملکرد خیلی بهتری رو ایجاد کرد

 

فایل ajaxHandler.php:

<?php
include "../bootstrap/init.php";
/**
 * 
 * Check Is Ajax Request
 * 
 */
if (!isAjaxRequest()) {
    diePage('Invalid Request!');
}
include BASE_PATH . "process/ajax.php";
/**
 * 
 * Check Ajax Callback Is Exists
 * 
 */
if (isset($_POST['action']) && !empty($_POST['action']) && is_callable($_POST['action'])) {
    call_user_func($_POST['action']);
} else {
    diePage('Invalid Request!');
}

فایل ajax.php که تمام درخواست‌ها اینجا مدیریت میشهاز طریق تابع:

<?php
function addNewFolderAjaxCallback()
{
    extract($_POST);
    $folder_name = (!empty($new_folder_name)) ? $new_folder_name : false;
    if ($folder_name) {
        $add_folder = addFolder($folder_name, 1);
        if ($add_folder) {
            $result = array(
                'status' => 'success',
                'msg' => 'پوشه با موفقیت ایجاد شد'
            );
        } else {
            $result = array(
                'status' => 'error',
                'msg' => 'خطای ناشناخته رخ داد'
            );
        }
    }
    echo json_encode($result);
}

کد جی کوئری:

jQuery(document).ready(function ($) {
    let body = $('body');
    $('#addFolderForm').submit(function (e) {
        e.preventDefault();
        let form = $(this);
        let msgBox = $('#addNewFolderModal .ajax-msg');
        let input = $('#new-folder-name');
        if (!input.val()) {
            msgBox.text('عنوان نمیتواند خالی باشد').addClass('alert-danger').show();
            return false;
        }
        $.ajax({
            url: 'process/ajaxHandler.php',
            data: form.serialize() + "&action=addNewFolderAjaxCallback",
            method: 'POST',
            dataType: 'json',
            beforeSend: function () {
                msgBox.text('در حال انجام عملیات...').removeClass('alert-danger').addClass('alert-warning').show();
            },
            success: function (response) {
                msgBox.html(response.msg).removeClass('alert-warning').addClass('alert-' + response.status).show();
            },
            error: function () {
                msgBox.text('خطایی رخ داد، دقایقی بعد مجدد امتحان کنید.').removeClass('alert-warning').addClass('alert-danger').show();
            }
        });
    });
});

پیشاپیش ممنون

پروژه من تا این جلسه:

عملیات‌های کاملا ajax (افزودن فولدر به دیتابیس و لیست فولدر‌های کاربر + نمایش تعداد کل فولدر‌های کاربر)

عدم امکان ثبت فولدرهای با نام مشابه

علیرضا دهکار ۲۱ اردیبهشت ۱۳۹۹، ۱۷:۴۱

سلام علیرضا

روشی که استفاده کردی خیلی خوبه.

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

بهت تبریک می‌گم قشنگ شده پروژه ات. روش کار کن و توسعه اش بده و چالش بهش اضافه کن مدام 

ممنون

بهترین پاسخ
لقمان آوند ۲۲ اردیبهشت ۱۳۹۹، ۰۰:۳۸