نوع دیگه پیاده سازی عملیات های ajax پروژه TaskManager

پرسیده شده
فعالیت 1449 روز پیش
دیده شده 885 بار
1

سلام

استاد من تغییری در روش بررسی عملیات های 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();
            }
        });

    });
});

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

فایل پیوست

علیرضا دهکار
علیرضا دهکار

21 اردیبهشت 99

0
حذف شده

سلام علیرضا

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

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

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

ممنون

فایل پیوست

لقمان آوند

توسط

لقمان آوند

22 اردیبهشت 99

حذف شده
ممنونم استاد بابت نظر بسیار ارزشمندتون. روحیه ای شد برام که با ذوق و شوق بیشتر برنامه نویسی رو ادامه بدم. چشم حتما این پروژه رو توسعه میدم به بهترین نحو و سعی دارم برای تمرین هم که شده ی پروژه بزرگ رو انتخاب کنم البته فعلا پروژه کوچک انجام میدم تا به بخش شی گرایی برسیم اونموقع میرم سراغ پروژه های بزرگ تا بهتر بتونم کدبزنم و تجربه و آشنایی بیشتری بشه.بازم ممنون و نماز و روزه هاتون قبول باشه انشاالله
علیرضا دهکار

22 اردیبهشت 99

4
حذف شده

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

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

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

فایل پیوست

علیرضا دهکار

توسط

علیرضا دهکار

21 اردیبهشت 99