Как прочитать параметры запроса post с помощью javascript


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

$wnd.location.search

но это не работает для запроса POST.Может ли кто-нибудь сказать мне, как читать значения параметров post-запроса в моем html с помощью javascript.

15 61

15 ответов:

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

немного PHP, чтобы заставить сервер заполнить переменную JavaScript быстро и легко:

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

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

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

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

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

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

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

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

на другой странице.html:

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

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

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

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

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

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

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

вы можете 'json_encode' для первого кодирования переменных post через PHP. Затем создайте объект JS (массив)из переменных post в кодировке JSON. Затем используйте цикл JavaScript для управления этими переменными... Как в данном примере - для заполнения бланк формы HTML:

<script>

    <?php $post_vars_json_encode =  json_encode($this->input->post()); ?>

    // SET POST VALUES OBJECT/ARRAY
    var post_value_Arr = <?php echo $post_vars_json_encode; ?>;// creates a JS object with your post variables
    console.log(post_value_Arr);

    // POPULATE FIELDS BASED ON POST VALUES
    for(var key in post_value_Arr){// Loop post variables array

        if(document.getElementById(key)){// Field Exists
            console.log("found post_value_Arr key form field = "+key);
            document.getElementById(key).value = post_value_Arr[key];
        }
    }


</script>

один из вариантов-установить 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.

Если вы работаете с 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>

переменные POST доступны только для браузера, если тот же браузер отправил их в первую очередь. Если другая форма веб-сайта отправляется через POST на другой URL-адрес, браузер не увидит, что данные POST поступают.

сайт A: имеет форму отправки на внешний URL (сайт B) с помощью POST Сайт B: получит посетителя, но только с переменными GET

function getParameterByName(name, url) {
            if (!url) url = window.location.href;
            name = name.replace(/[\[\]]/g, "\$&");
            var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                results = regex.exec(url);
            if (!results) return null;
            if (!results[2]) return '';
            return decodeURIComponent(results[2].replace(/\+/g, " "));
        }
var formObj = document.getElementById("pageID");
formObj.response_order_id.value = getParameterByName("name");
$(function(){
    $('form').sumbit{
        $('this').serialize();
    }
});

в jQuery приведенный выше код даст вам строку URL с параметрами POST в URL. Это не невозможно извлечь параметры POST.

использовать jQuery, вам нужно включить библиотеку jQuery. Используйте для этого следующее:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>

мы можем собирать параметры формы, представленные с помощью POST с помощью сериализовать

<head><script>var xxx = ${params.xxx}</script></head>

используя выражение EL ${param.ХХХ} в <head> чтобы получить параметры из метода post, и убедитесь, что файл js включен после <head> Так что вы можете обрабатывать парам, как " xxx " непосредственно в вашем js-файле.