Эхо формы данных без отправки на сервер

0

У меня есть крошечная форма на странице, где я спрашиваю имя пользователя, форма отправляет данные в name.php и возвращает имя пользователя, например, "Здравствуйте, Стивен". Стивен - это имя, введенное в форму.

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

Я бы предпочел не отправлять имена, введенные в форму, на сервер или в базу данных, а просто сохранить их для сеанса, а затем потерять их.

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

Код, который я сейчас использую для крошечной формы, выглядит следующим образом:

<form role="form" id="inviteform3" class="form-inline" action="name.php" method="POST">
<div class="form-group">
<input type="text" class="form-control input-sm" name="name" placeholder="Your Name" 
id="hello" autocomplete="off" style="margin-top:10px">
                            </div>
                            <center>
                            <span id="result"></span>
                            <button class="btn btn-brand btn-sm next-screen animated bounceInUp" 
id="go" style="margin-top:5px; display:none" href="#services" data-animation-delay=".5s">  
Let Go!</button></center>

<button class="btn btn-block btn-brand btn-xs invitebtn3" id="casi" type="submit" 
style="margin-top:5px"><i class="fa fa-thumbs-o-up"></i> Submit</button>

</form>

Моя форма php (name.php) выглядит следующим образом:

<html>
<body>

Let get started, <?php echo $_POST["name"]; ?>

</body>

</html>

и мой код JS:

<script>

$(document).on("ready", function(){
//Form action
$("#inviteform3").on("submit", function(event){
// Stop submit event
event.preventDefault();
$.ajax({
    type:'POST', 
    url: 'name.php',
    data:$('#inviteform3').serialize(), 
    success: function(response)  
    {
        $('#inviteform3').find('#result').html(response);
    }});
});
});

</script>
Теги:
forms
echo

3 ответа

0
Лучший ответ

Нам нужно понять несколько вещей:

Я бы предпочел не отправлять имена, введенные в форму, на сервер или базу данных, а просто хранить их для сеанса, а затем потерять их.

Вы отправляете эти данные на сервер, вы использовали JQuery и AJAX для POST вашей формы name.php(PHP работает на сервере), от которого вы получите ответ и добавить его на страницу с линией:

$('#inviteform3').find('#result').html(response);

Если вы хотите ХРАНИТЬ эти данные, хранящиеся (например, в сеансе), вы можете использовать PHP, предложенный Антони name.php в name.php. Когда браузер закрыт, сеанс уничтожается. До тех пор вы можете использовать переменную сеанса, где захотите.

Теперь, когда имя было отражено в этой форме, я хотел бы снова повторить эти же данные в другом месте на странице. Здесь я столкнулся с стеной.

Вы echo от имени в name.php, ваш вызов AJAX затем извлекает всю страницу (включая теги html и body) и добавляет ее в #result. Если вы хотите показать имя mulitple times, просто добавьте его несколько раз с помощью строки выше.

0
$("#inviteform3").on("submit", function(event) {
    var name = $("form input['name']").val();

     // Here is the interesting part
     sessionStorage.setItem("name", name);
}

// Get that name
var access_name = sessionStorage.getItem("name");

$("#some_id").html(access_name); // Inserts the name where you want it.

sessionStorage вытирается каждый раз, когда вкладка/окно закрывается.

  • 0
    Так что теперь я могу просто использовать <? Php echo $ _POST ["name"]; ?> Где мне нужно, и он должен отражать представленные данные в этой сессии? @ Aroll605
  • 0
    Нет. Поместите данные в эти области с помощью javascript sessionStorage.getItem("name") . Эти данные хранятся локально, ваш PHP-скрипт не имеет к ним доступа.
Показать ещё 3 комментария
0

Вы можете использовать PHP вместо Javascript.

session_start();
$_SESSION['name'] = $_POST['name'];

Переменная $_SESSION очищается, когда браузер закрыт и является глобальным, поэтому доступ к нему возможен в любом месте. session_start должен быть первым, что вы делаете, хотя в строке 1 первой запущенной страницы.

Более подробную информацию о сессий в PHP можно найти здесь, и около $_SESSION здесь.

Например:

Вы отправляете на name.php. Итак, в строке 1 имени.php do

  <?php session_start(); ?>

Тогда сделайте

<?php
     if (isset($_POST['name'])) {
        $_SESSION['name'] = $_POST['name'];
     }
?>

Затем, где бы вы его ни использовали, просто выполните echo $_SESSION['name'];

Если вы хотите эхо в других файлах. Затем в строке 1 другого файла

 <?php session_start(); ?>

Затем:

<?php
     if (isset($_SESSION['name'])) {
        echo $_SESSION['name'];
     }
?>

Оператор if существует только для проверки, но вам это не нужно, если вы уверены, что он установлен.

  • 0
    Как я уже говорил, @Antony D'Andrea, я очень новичок в php. Однажды мне удалось повторить данные, но я застрял и не понимаю, какие предложения я получаю. Любая дополнительная помощь будет оценена
  • 0
    Я попытался добавить пример. Но я не уверен, насколько яснее я могу это сделать!
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню