Как прочитать параметры запроса post с помощью javascript
Я пытаюсь прочитать параметры запроса post из моего html. Я могу прочитать параметры запроса get, используя следующий код в javascript.
$wnd.location.search
но это не работает для запроса POST.Может ли кто-нибудь сказать мне, как читать значения параметров post-запроса в моем html с помощью javascript.
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 с помощью сериализовать