Отображение данных на следующей странице с помощью сеанса jQuery или другим возможным способом? - PullRequest
0 голосов
/ 06 июля 2018

вот моя простая форма:

<form id="myform">
    Name:<input type="text" name="name"><br>
    Email:<input type="text" name="email">
    <a class="btn btn-primary" id="click_btn">Submit</a>
</form>

Я хочу отправить форму с Ajax, пока что все в порядке, и отправляю.

Вот мой код jquery: $ (документ) .ready (function () { $ ('# click_btn'). on ('click', function () {

    $.ajax({
      url: $('myform').attr('action'),
      data: $('myform').serialize(),
      method: 'post',

      success: function(data) {
        //success meseg then redirct
        alert('success');

        var data = $('#myform').serializeArray();

        var dataObj = {};

        $(data).each(function(i, field) {

          dataObj[field.name] = field.value;
          window.location.href = 'next_page.php';
        });
      }

    })


  });
})

next_page.php - это место, к которому я хочу получить доступ, пример:

<?php echo document.write(dataObj["email"]); ?>

Я хочу получить доступ к этим значениям формы, которые я отправил на следующей странице после отправки формы. Я создал объект данных со всеми значениями, используя jQuery после отправки, но я не могу получить доступ на следующей странице. Есть ли какая-либо концепция, связанная с session в jquery для хранения этого массива.

Ответы [ 5 ]

0 голосов
/ 06 июля 2018

Список некоторых возможных решений:

1. Разместите данные с помощью AJAX-запроса и получите их на следующей странице, выполнив вызов БД (желательно)

2. Используя локальное хранилище, вы можете сохранить данные в браузере, чтобы отправить их на next_page.php https://www.w3schools.com/Html/html5_webstorage.asp

2a. На первой странице

<script>
    localStorage.setItem("name", "John");
    localStorage.setItem("email", "John@test.com");
</script>

2b. На второй странице

<script>
    var name = localStorage.getItem("name");
    var emaeil = localStorage.getItem("email");
</script>

3. Использование хранилища сеансов браузера https://www.w3schools.com/jsref/prop_win_sessionstorage.asp

3a. На первой странице

<script>
    sessionStorage.setItem("name", "John");
    sessionStorage.setItem("email", "John@test.com");
</script>

3b. На второй странице

<script>
    var name = sessionStorage.getItem("name");
    var emaeil = sessionStorage.getItem("email");
</script>
0 голосов
/ 06 июля 2018

Вы можете полностью использовать sessionStorage! ( Вот документация )

Если пользователь переходит на следующую страницу на той же вкладке, sessionStorage может легко сохранить ваши данные и повторно использовать на следующей странице.

// set in page A
window.sessionStorage.setItem('youdata', 'youdata');
// or window.sessionStorage['youdata'] = 'youdata';

// get in page B
var youdata = window.sessionStorage.getItem('youdata');
// or var youdata = window.sessionStorage['youdata'];

Вот и все! очень просто!

Если вы откроете новую вкладку, вы можете использовать localStorage. ( Вот документация )

Использование localStorage похоже на способ sessionStorage.

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

0 голосов
/ 06 июля 2018
 <?php echo document.write(dataObj["email"]); ?>

Это необоснованно! echo - это команда PHP, но document.write - это команда JavaScript. Если второй страницей является PHP, почему бы не отправить данные с помощью простой отправки POST из формы HTML?

0 голосов
/ 06 июля 2018

Вы также можете использовать localStorage:

var data = '123';
localStorage['stuff'] = data;

Используйте localStorage.clear();, чтобы удалить все данные, если вы хотите записать их снова, или для определенного элемента используйте localStorage.removeItem('stuff');

0 голосов
/ 06 июля 2018

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

jQuery и весь JavaScript существует только на стороне клиента (для практических целей - есть исключения, когда некоторый код на стороне клиента может быть отрендерен или скомпилирован на стороне сервера по любой причине, но это другой вопрос). PHP, как и любой другой серверный язык, существует на серверной стороне. Эти двое не могут напрямую получить доступ друг к другу, поэтому AJAX полезен для передачи данных между интерфейсом и бэкендом.

По сути, вы, похоже, делаете здесь загрузку данных на стороне клиента, но не отправляете что-либо на стороне сервера. Вы на самом деле не делаете никаких запросов AJAX. Когда вы перенаправляете пользователя через window.location.href =..., данные на самом деле не передаются - он просто инструктирует браузер отправлять новый запрос GET на next_page.php (или куда бы вы ни указали).

Есть несколько вариантов сделать то, что вы пытаетесь достичь:

  1. Фактически отправьте запрос AJAX, используя методы, описанные здесь http://api.jquery.com/jquery.ajax/. Затем вы можете использовать next_page.php, чтобы получить данные, сохранить их в сеансе и вызвать их, когда пользователь попадет на страницу.
  2. Хранить данные в файле cookie на стороне клиента.
  3. Используйте стандартный HTML <form method="next_page.php"...><input type="submit">, чтобы браузер перенаправлял данные формы в сценарий next_page.php.
  4. Ряд других опций, но я думаю, что они самые простые.
...