Может ли PHP манипулировать (показывать / скрывать) элементами div, такими как jQuery? - PullRequest
1 голос
/ 07 июля 2010

Я создаю форму, и когда пользователь нажимает кнопку Отправить, я хочу, чтобы она скрыла форму и показывала раздел с надписью «спасибо, бла-бла»

Я использую PHP / PEAR MailФабрика:

$mailObj =& Mail::factory('mail');

$bool = $mailObj->send($recipient, $headers, $body);

if($bool)
    echo "Thank you for your submission.";
else
    echo "There was a problem processing your request.";

$body = ""; // clear the body

Ответы [ 5 ]

6 голосов
/ 07 июля 2010

Да и нет.

В соответствии с вашим сценарием, когда форма отправляется и оценивается на стороне сервера, можно показать или скрыть части отображаемого html.

Но для части "like jQuery" ответ - нет. PHP - это язык, который выполняется на стороне сервера и требует выполнения запроса. То есть нажата ссылка или отправлена ​​форма.

Для оценки на стороне клиента необходимо использовать JavaScript, Flash или аналогичные технологии.

2 голосов
/ 07 июля 2010

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

Если вы хотите остаться на этой странице формы, но изменить ее внешний вид на основе информации, возвращаемой с вашего сервера (как в вашем примере php-кода), то вам нужно будет выполнить асинхронную отправку формы. Вы можете использовать функцию jQuery $.ajax() или ее родственников, а затем изменить свою страницу в функции обратного вызова на основе информации об успехе / неудаче, которую вы возвращаете из серверного сценария.

Простой пример:

$.post(
  'your_php_handler.php', 
  $("#your_form").serialize(), // send all your form fields
  function(data) { // data = what comes back from your php handler script
    $('#thing_you_want_to_change').html(data);
  }
);
2 голосов
/ 07 июля 2010

Не без перезагрузки страницы.Если вы перезагрузите всю страницу, то будет просто сделать оператор php if, который показывает / или не отображает форму в зависимости от факторов (была ли она отправлена?).

<?php if($submited): ?>
some html
<?php else: ?>
show the form
<?php endif; ?>

В противном случае вам придется использовать jquery (илинекоторый другой код JavaScript).

2 голосов
/ 07 июля 2010

Вы можете условно использовать переменную в вашей ситуации:

<?php
if($bool)
{
?>
     <div class="success">Email Sent Successfully !!</div>
<?php
}
?>
0 голосов
/ 07 июля 2010

PHP на стороне сервера, вам нужно будет выводить текст 'style = "display: none"' при перезагрузке страницы. Если вы пытаетесь отправить заявку с использованием AJAX, то нет, без javascript сделать это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...