0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 5

Как реализовать отправку формы без перезагрузки страницы?

13.02.2017, 20:02. Показов 1929. Ответов 9

Студворк — интернет-сервис помощи студентам
Раньше учил создавать сайты по видео урокам Евгения Попова (ruseller. com). Его уроки без использования ООП. Создал сайт на уровне функций и процедур. Там отправку формы без перезагрузки страницы реализовал как показано здесь ruseller. com/adds. php?rub_id=12&id=1670. Этим способом реализовал и удаление файлов и добавление, редактирование, удаление заметок. В общем классно получилось. Сейчас же изучаю PHP ООП по урокам Михаила Русакова. Щас вот задача - как реализовать отправку формы и тому подобное без перезагрузки страницы. Можно тем же способом или что-то другое есть? Помогите пожалуйста. Поделитесь опытом. Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2017, 20:02
Ответы с готовыми решениями:

Как сделать отправку формы без перезагрузки страницы с получением ответа
Добрый день, уважаемые форумчане. В javascript и ajax разбираюсь крайне плохо и прошу помочь. Нужно сделать отправку формы обработчику php...

Как реализовать? На одном компьютере меняешь данные, на другом сразу (без перезагрузки страницы) отображается результат
Не знал как правильнее сформулировать вопрос. Я и в PHP не особо разбираюсь, и понимаю, что такое с одним PHP не реализовать. Мне нужна...

Как получить данные из формы Django средствами jquery и вывести их на экран без перезагрузки страницы?
Есть форма Джанго <div class="field inline" id='lot'> <label for="{{ form.lot_cost.id_for_label }}" ...

9
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
13.02.2017, 21:51
Можно тем же способом
1
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
13.02.2017, 23:07
Цитата Сообщение от kostyam51 Посмотреть сообщение
Можно тем же способом
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
                type: 'POST',
                url: '/post', // путь до TestContoller/ActionPost
                data: formdata,
                beforeSend: function() {
                    // Перед отправкой выведем уведомление:
                    $('#status').html('<div>Подождите...</div>');
                },
                success: function (data) {
                    $('#status').html(data);
                },
                error: function (xhr, str) {
                    alert('Возникла ошибка: ' + xhr.responseCode);
                }
            });
Сам контроллер и экшен
PHP
1
2
3
4
5
6
7
8
Class TestController extends Controller {
 
    public function actionPost(){
        if ($_POST){
            print_r($_POST);
        }
    }
}
1
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 5
14.02.2017, 19:39  [ТС]
ок. спасибо. попробую реализовать так же.
0
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 5
15.02.2017, 18:48  [ТС]
Цитата Сообщение от FloppyDisc Посмотреть сообщение
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
                type: 'POST',
                url: '/post', // путь до TestContoller/ActionPost
                data: formdata,
                beforeSend: function() {
                    // Перед отправкой выведем уведомление:
                    $('#status').html('<div>Подождите...</div>');
                },
                success: function (data) {
                    $('#status').html(data);
                },
                error: function (xhr, str) {
                    alert('Возникла ошибка: ' + xhr.responseCode);
                }
            });
Сам контроллер и экшен
PHP
1
2
3
4
5
6
7
8
Class TestController extends Controller {
 
    public function actionPost(){
        if ($_POST){
            print_r($_POST);
        }
    }
}
Файл index.php
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type="text/javascript">
function qwerty(value)
{
    var req = new JsHttpRequest();
    req.onreadystatechange = function()
    {
        if (req.readyState == 4)
            if(req.responseJS.error)
                alert(req.responseJS.errorMess);
            else
                alert(req.responseJS.errorMess);
    }
    req.open('POST', 'obrabotchik.php', true);
    req.send( { q: value } );
}
</script>
HTML5
1
2
3
4
<form method="POST" name="form_a" id="form_a" onSubmit="return false">
    <input type="text" name="name_t" value="">
    <input name="button" type="button" value="Отправить" onclick="qwerty(document.getElementById('form_1'))">
</form>
Файл obrabotchik.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query = $db->query("..."); //Добавляем в БД;
if($query)
{
    $GLOBALS['_RESULT'] = array('error' => true, 'errorMess' => 'Успех!');
    exit('Success!');
}
else
{
    $GLOBALS['_RESULT'] = array('error' => false,'errorMess' => 'Ошибка!');
    exit('Error!');
}
?>
Еще есть два файла, которые скачал с ruseller. com
JsHttpRequest.js - подключаю в index.php
JsHttpRequest.php - подключаю в obrabotchik.php

Как с помощью ООП сделать?
Вложения
Тип файла: rar JsHttpRequest.rar (6.8 Кб, 1 просмотров)
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
15.02.2017, 21:35
Цитата Сообщение от kostyam51 Посмотреть сообщение
Как с помощью ООП сделать?
ООП - это лишь ваш стиль программирования, конечно же если вы не собираетесь создавать что-то уже более структурированное (иерархии, наследования и др. вкусности) приложение, для чего оно и используется. и от того, что вы все (JsHttpRequest.php) переделаете под ООП смысла и главное пользы слишком-то и не прибавится.(ООП ради ООП)

тут все сводится, я так понимаю к этому:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
public static function _call($controller, $action, $params = []){
 
        if (class_exists($controller)) {
            $controller = new $controller;
            if (method_exists($controller, $action))
                return call_user_func_array(array($controller, $action), $params);
            else {
                throw new Except(...);
            }
        } else {
            throw new Except(....);
        }
    }
А так наверное вы хотели спросить как это сделать с помощью MVC?

Много и не надо:
1. Правильная структура MVC
2. Единая точка входа приложения (с автозагрузкой классов)
3. Роутер, который обрабатывает запросы, вызывает нужные контроллеры и действия

Вот для начала хороший примеры:
первый
второй
1
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 5
17.02.2017, 18:58  [ТС]
спасибо, изучаю php ооп по урокам Дмитрия Елисеева, хотел заранее узнать с чем мне придется столкнуться потом, сложно ли это или нет, есть ли смысл изучать, смогу ли я потом реализовать это ))) вот так...
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
18.02.2017, 20:52
Цитата Сообщение от kostyam51 Посмотреть сообщение
есть ли смысл изучать
Есть) и большой, т.к, если хотите и дальше идти, то без ОПП и понимания паттернов будет туго)
Цитата Сообщение от kostyam51 Посмотреть сообщение
сложно ли это или нет
Цитата Сообщение от kostyam51 Посмотреть сообщение
смогу ли я потом реализовать это
МБ и сначала покажется сложным и это нормально даже, сам еще изучаю, было сложно, но постепенно понимаешь и оказывается делов-то) Все что было под таким описанием "Как вообще тут можно что-то понять!?" уже будешь реализовывать сходу, но трудности никогда не заканчиваются и в этом и прелесть, уровень всегда должен повышаться)

У Дмитрия Елисеева хорошие уроки, а потом у него же можно пересесть на еще одну ступень - фреймворки, типа Yii
1
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
20.02.2017, 12:34
ООП тут ни при чем...

Это в JS вопрос задавайте
1
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 5
27.02.2017, 11:05  [ТС]
Всем СПАСИБО, ребята!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2017, 11:05
Помогаю со студенческими работами здесь

Реализовать html форму без перезагрузки страницы
я новичек, написал коротенькую программу для отправки формы без перезагрузки страницы, почемуто форма выходит 2 раза. помогите пожалуйста! ...

Отправка формы без перезагрузки страницы
Всем привет, интересует сабмит данныйх из html формы и отправка их на мейл без перезагрузки страницы. На сколько я понимаю нужно :...

Отправка формы без перезагрузки страницы
Подскажите пожалуйста, как можно сделать отправку формы методом POST без перезагрузки страницы? Нашел такой код: ...

Обработчик формы без перезагрузки страницы
Ув форумчане ,помогите написать обработчик простой формы что бы при успешной отправке на текущей странице(без перезагрузки) появлялось...

Отправка формы без перезагрузки страницы
Всем добрый день. На данный момент отправка формы реализована через Ajax. Все отправляется, все приходит на email, но сообщение об отправке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. ) Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
Мысли в слух
kumehtar 29.10.2025
Обнаружил, что мысли лучше писать короткими фразами. Таким образом внимание читателя успевает охватить всю фразу сразу, за один раз, не соскакивая и не прерываясь. А если писать это длинным текстом,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru