Получить переменную $ _session из файла PHP и использовать ее в AJAX - PullRequest
0 голосов
/ 27 октября 2011

Я довольно нов, когда дело доходит до использования языков сценариев, поэтому я изо всех сил пытаюсь разобраться в понятиях.

В основном у меня есть эта форма

<form method="post" action="/list/process.php">
 <input type="email" name="address" value ="Email" />
 <input type="hidden" name="lists[]" value="122" />
 <input type="submit" name="submit" value="Join" />
</form>

process.php проверяет адрес электронной почты на предмет правильного синтаксиса и в случае успеха проверяет адрес в базе данных, чтобы увидеть, существует ли он уже («отписаться») или нет («подписаться»)

Я включил этот фрагмент PHP на страницу вида

<div id="result">
<?php
   if ($_SESSION['result'] == ("fail"))
    {
    echo "<p>Please enter a valid email address!</p>";
    }

   if ($_SESSION['result'] == ("success") && $_SESSION['action'] == ("subscribe"))
    {
    echo "<p>Thankyou for joining, you will shortly receive an email at $_SESSION[address]' with a link to your free download.</p><p>Note: if you do not receive an email, please check your junk folder and mark the message as safe.</p>";
    }

   if ($_SESSION['result'] == ("success") && $_SESSION['action'] == ("unsubscribe"))
    {
    echo "<p>You will shortly receive an email with a link to unsubscribe from the mailing list.</p>";
    }
?>
</div>

Не уверен, что мой синтаксис PHP работает с нуля (я новичок в этом), но он работает. Конечно, результат div # отображается как «Пожалуйста, введите правильный адрес электронной почты!» когда вы изначально загружаете страницу, потому что $ _SESSION ['result'] возвращается с ошибкой. Все остальные возможности работают, когда я отправляю форму.

Теперь, как мне начать репликацию этого фрагмента PHP в AJAX? Я предполагаю, что для этого потребуется отправить форму в process.php с использованием AJAX, вернуть обратно три переменные сеанса и затем обработать их описанным выше способом (но в JavaScript), чтобы отобразить одно из трех сообщений в первоначально скрытом div (# результат) в всплывающем / всплывающем режиме.

Вопрос в том, как? У меня нет опыта использования AJAX, и, похоже, это единственный способ добиться желаемого результата.

Спасибо за вашу помощь.

Адам

1 Ответ

1 голос
/ 27 октября 2011

Я думаю, что использование сессий, вероятно, не нужно в этом случае.

Вот что я бы сделал:

  • Когда форма загружается впервые, скрыть div#result с помощью JavaScript.
  • Когда кто-то отправляет форму через process.php, обработайте форму и верните массив JSON, содержащий список сообщений об ошибках и переменную, обозначающую, была ли отправка успешной.
  • Сторона AJAX должна получить ответ, посмотреть переменную успеха и, если она ложна, вставить эти сообщения в div#result и показать div.
...