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