Здравствуйте. В файле Аякса есть много проверок на нажатые кнопки: PHP: if(isset($_POST['slideButton'])){ } // и так десятки условий, без else Читал, что если много таких условий, то лучше их перевести на "switch". Только вот не могу понять, как "isset($_POST['slideButton'])" разделить на "switch" и "case"? Тут же нет равенства?
PHP: switch ($luchik) { case "условие 1": if(isset($_POST['slideButton'])){ } break; case "условие 2": if(isset($_POST['slideButton'])){ } break; case "условие 3": if(isset($_POST['slideButton'])){ } break; } default: //Сюда условие по умолчанию break Ну и так далее!
@_ne_scaju_, что-то не понял. if(isset($_POST['slideButton'])) - это и есть условие. Зачем его ещё в одно условие вставлять? Надо же if заменить на switch-case. if-то и без switch-case нормально работает.
Изначально некорректная архитектура потому что. Аякс должен, по-хорошему, передавать не каждую кнопку в отдельном параметре, а параметр button, значение которого равно названию нажатой кнопки. И вот тогда можно сделать switch($_POST['button']) будет. А я так вообще, в последнее время гоняю на сервер только JSON-пакеты. Что и тебе рекомендую. В них указано, какое действие надо совершить, есть пачка параметров, необходимых для его свершения, да пачечка служебных данных, ну типа там CSRF-токен, AJAX-флаг, чтоб система поняла, что от нее хотят, все. Ответ тоже отсылается в JSON-е, содержит в себе статус обработки запроса и данные ответа отдельным полем. Подразумевается, что обработчик запроса знает, что делать с пакетом данных от клиента, а обработчик ответа знает, что делать с пакетом данных от сервера. По этому структура "дополнительного поля" может быть любой под капотом. Удобно. Расширяемо. Плюс, позволяет использовать в качестве клиента не только браузер, но, на будущее, мобильное приложение, например. Причем вообще без переделки сервера под это дело.
@Булат Азат улы Да уж ты же читал про switch как он действует? ну вот я показал пример минимальный как тебе надо было сделать как ты хотел. и вместо слов "условие 1" можно подставлять свои значения, по которым ты будешь обращаться) Почитай пожалуйста в мануале https://php.ru/manual/control-structures.switch.html читай.
@Fell-x27, я тоже собираюсь переделать под JSON, но пока не спешу, так как ещё нужно как-то подогнать АЯКС под передачу изображений, чего ещё не придумал, как лучше сделать. Но пока, то есть, можно создать в данных для передачи одинаковое название (button, например), и каждому запросу задать своё значение. Как-то сам не дагадался, спасибо! А значения кнопок отправлять таким образом не получится (сейчас я их в основном и отправляю), так как в большинстве случаев они у меня похожи ("Отправить", "Сохранить", "Удалить" и т.д.). К тому же, Аякс срабатывает у меня иногда и без кнопок (по нажатию на ячейку таблицы, например). --- Добавлено --- @_ne_scaju_, я уже использовал switch, когда делал единую точку входа, и об этом нормально знаю. Пользователь @Fell-x27 мне подсказал, как можно сделать. Нужно иметь одно одинаковое, универсальное название передаваемых данных (например, $_POST['button']) и ему уже задавать оригинальные значения для каждого запроса. Тогда можно будет сделать вот так: PHP: switch($_POST['button']){ case "slide": // обработать запрос по кнопке "slide" break; case "news": // обработать запрос по кнопке "news" break; // и т.д. }
@Fell-x27, просто как-то так получилось, что было бы лучше при отправке не обновлять страницу. Это же без AJAX невозможно? Конечно, если не получится с Аяксом, придется просто формой отправлять.
Тьу, я оговорился. Не пакуй в JSON, а не в ajax. Простым аяксом слать файлы можно без проблем. Ничем не отличается от обычной отправки. Просто делаешь POST через Ajax, файлы отдельно, JSON с данными отдельно. Проверено, работает.