2014-09-11 3 views
0

В настоящее время у меня есть два файла PHP, которые функционируют как форма и другие, которые функционируют как процессор предоставленной информации. Они связаны между собой следующим образом:Предотвращение тега действия от переключения текущей страницы?

<form action="processing.php" method="POST" enctype="multipart/form-data"> 

Когда я ударил представить, переключатели страниц в файл «processing.php». Недавно я реализовал обязательные поля, которые должны вводить пользователи, но они не могут видеть это предупреждение, потому что страница переключается. Я тестирую это в WAMP.

Я думаю, что решение может состоять в том, чтобы включить скрипт обработки в тот же файл, что и фактическая форма, но сценарий довольно длинный, и мне бы очень хотелось, чтобы он оставался в двух отдельных файлах для удобочитаемости.

Есть ли способ предотвратить переключение страницы на страницу, указанную в теге действий?

+0

Как вы применили обязательные поля? С помощью скрипта проверки Javascript? Он должен вызывать 'event.preventDefault()', чтобы предотвратить выполнение представления, если пользователь не ввел необходимые поля. – Barmar

+0

@Barmar Я этого не делал, я думал, что мне нужен только PHP. Должен ли я создать новый файл для использования Javascript или он будет правильно разбираться в PHP-файле? Использование PHP для обязательных полей - это, вероятно, не лучшая идея, потому что она все еще отправляет данные, она просто сообщает, что им нужно заполнить определенное поле. – skeletonne

+0

PHP может выводить что-либо в HTML-файл, включая Javascript и CSS. PHP не запускается, пока вы не отправите форму, поэтому слишком поздно, чтобы она не переходила на новую страницу. – Barmar

ответ

0

HTTP POST из формы переходит в любое действие, которое вы задали. Если вы хотите, чтобы применяемая логика находилась в другом файле, вам нужно перестроить все, чтобы ваша логика находилась в process.php, или вам нужно изменить действие формы.

Если вы хотите предотвратить обновление страницы вместе, вам необходимо использовать ajax.

+0

Что делать, если я включил весь скрипт в один файл? Я знаю, что это, вероятно, плохая практика, и я не должен этого делать. По-прежнему считается обновлением страницы, если страница идет с "localhost/applicaiton.php" на "localhost/processing.php"? – skeletonne

+0

Если страница меняется, я бы назвал это обновлением/перезагрузкой/и т. Д. Пользователь видит пробел, а затем больше загружает контент. Вам не нужно включать весь сценарий в один файл, но когда вы выполняете POST из формы, если у вас есть атрибут действия, там браузер отправляет запрос. Нет ничего плохого в том, чтобы включить весь скрипт в один файл. Просто проверьте! Empty ($ _ POST), и вы знаете, что форма была отправлена. –

+0

Если бы я включил его в один файл, у меня просто не было бы действия? – skeletonne

0

Если вы хотите предотвратить переключение страницы, если требуемые поля не заполнены должным образом, вам необходимо создать вызов onSubmit javascript, а затем вернуть false, если проверка поля не удалась.

Смежные вопросы