Как читать параметры запроса поста, используя JavaScript - PullRequest
71 голосов
/ 11 сентября 2009

Я пытаюсь прочитать параметры запроса поста из моего HTML. Я могу прочитать параметры запроса get, используя следующий код в javascript.

$wnd.location.search

Но это не работает для пост-запроса. Может кто-нибудь сказать мне, как прочитать значения параметров пост-запроса в моем html, используя JavaScript.

Ответы [ 16 ]

147 голосов
/ 11 сентября 2009

Данные POST - это данные, которые обрабатываются на стороне сервера . И Javascript на стороне клиента. Таким образом, вы не сможете прочитать данные поста, используя JavaScript.

21 голосов
/ 14 декабря 2012

Небольшой кусочек PHP, позволяющий серверу заполнить переменную JavaScript, - это просто и быстро:

var my_javascript_variable = <?php echo $_POST['my_post'] ?>;

Затем просто получите доступ к переменной JavaScript обычным способом.

7 голосов
/ 11 сентября 2009

JavaScript - это язык сценариев на стороне клиента, что означает, что весь код выполняется на компьютере пользователя. Переменные POST, с другой стороны, идут на сервер и находятся там. Браузеры не предоставляют эти переменные среде JavaScript, и ни один разработчик не должен ожидать, что они будут волшебным образом там.

Поскольку браузер запрещает JavaScript получать доступ к данным POST, почти невозможно прочитать переменные POST без внешнего субъекта, такого как PHP, эхо-значения POST в переменную скрипта или расширение / дополнение, которое захватывает значения POST при передаче. Переменные GET доступны через временное решение, потому что они находятся в URL, который может быть проанализирован клиентским компьютером.

6 голосов
/ 31 октября 2014

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

Таким образом, у вас есть доступ к нему из любого места!

По везде Я имею в виду в данном домене / контексте

4 голосов
/ 12 апреля 2018

Использовать sessionStorage!

$(function(){
    $('form').submit{
       document.sessionStorage["form-data"] =  $('this').serialize();
       document.location.href = 'another-page.html';
    }
});

На другом-page.html:

var formData = document.sessionStorage["form-data"];

Ссылочная ссылка - https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

1 голос
/ 31 мая 2018

Если вы работаете с Java / REST API, обойти это легко. На странице JSP вы можете сделать следующее:

    <%
    String action = request.getParameter("action");
    String postData = request.getParameter("dataInput");
    %>
    <script>
        var doAction = "<% out.print(action); %>";
        var postData = "<% out.print(postData); %>";
        window.alert(doAction + " " + postData);
    </script>
1 голос
/ 02 июля 2014

Вы можете прочитать параметр запроса post с помощью jQuery-PostCapture ( @ ssut / jQuery-PostCapture ).

Плагин PostCapture состоит из нескольких трюков.

Когда вы нажмете кнопку отправки, будет отправлено событие onsubmit.

В то время PostCapture будет сериализовывать данные формы и сохранять их в html5 localStorage (если доступно) или в хранилище cookie.

1 голос
/ 29 августа 2013

POST - это то, что браузер отправляет с клиента (вашего партнера) на веб-сервер. Почтовые данные отправляются на сервер через заголовки http и доступны только на стороне сервера или между путями (например, прокси-сервером) от клиента (вашего браузера) к веб-серверу. Поэтому он не может быть обработан из сценариев на стороне клиента, таких как JavaScript. Вы должны обрабатывать его с помощью серверных сценариев, таких как CGI, PHP, Java и т. Д. Если вам все еще нужно писать на JavaScript, вам нужен веб-сервер, который понимает и выполняет JavaScript на вашем сервере, например Node.js

0 голосов
/ 12 октября 2018

Это зависит от того, что вы определяете как JavaScript. В настоящее время у нас фактически есть JS в программах на стороне сервера, таких как NodeJS. Это точно такой же JavaScript, который вы кодируете в своем браузере, за исключением языка сервера. Таким образом, вы можете сделать что-то вроде этого: ( Код Кейси Чу: https://stackoverflow.com/a/4310087/5698805)

var qs = require('querystring');

function (request, response) {
    if (request.method == 'POST') {
        var body = '';

        request.on('data', function (data) {
            body += data;

            // Too much POST data, kill the connection!
            // 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
            if (body.length > 1e6)
                request.connection.destroy();
        });

        request.on('end', function () {
            var post = qs.parse(body);
            // use post['blah'], etc.
        });
    }
}

И оттуда используют post['key'] = newVal; и т.д ...

0 голосов
/ 05 марта 2018

Один из вариантов - установить cookie в PHP.

Например: файл cookie с именем недействителен со значением $invalid, срок действия которого истекает через 1 день:

setcookie('invalid', $invalid, time() + 60 * 60 * 24);

Затем прочитайте его обратно в JS (используя плагин JS Cookie ):

var invalid = Cookies.get('invalid');

if(invalid !== undefined) {
    Cookies.remove('invalid');
}

Теперь вы можете получить доступ к значению из переменной invalid в JavaScript.

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