Ответ 1
Данные POST - это данные, которые обрабатываются на стороне сервера. И Javascript находится на стороне клиента. Таким образом, вы не можете читать данные сообщения с помощью JavaScript.
Я пытаюсь прочитать параметры запроса почты из своего html. Я могу прочитать параметры запроса получения, используя следующий код в javascript.
$wnd.location.search
Но это не работает для post request.Can, кто-нибудь скажет мне, как читать значения параметров запроса сообщения в моем html, используя javascript.
Данные POST - это данные, которые обрабатываются на стороне сервера. И Javascript находится на стороне клиента. Таким образом, вы не можете читать данные сообщения с помощью 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';
}
});
POST - это то, что браузер отправляет от клиента (вашего браузера) на веб-сервер. Почтовые данные отправляются на сервер через HTTP-заголовки и доступны только на стороне сервера или между путём (пример: прокси-сервер) от клиента (ваш браузер) до веб-сервера. Поэтому его нельзя обрабатывать с клиентских сценариев, таких как JavaScript. Вам нужно обрабатывать его с помощью сценариев на стороне сервера, таких как CGI, PHP, Java и т.д. Если вам все равно нужно писать на JavaScript, вам необходимо иметь веб-сервер, который понимает и выполняет JavaScript на вашем сервере, например Node.js
Вы можете прочитать параметр запроса сообщения с помощью jQuery-PostCapture (@ssut/jQuery-PostCapture).
Плагин PostCapture состоит из нескольких трюков.
Когда вы нажмете кнопку отправки, будет отправлено событие onsubmit
.
В то время PostCapture будет сериализовать данные формы и сохранить в html5 localStorage (если есть) или хранилище файлов cookie.
Если вы работаете с 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>
Вы можете прочитать его у сервисного работника. Однако это требует, чтобы они были на этой странице раньше и ранее зарегистрировали сервисного сотрудника. Вам также нужно будет запустить страницу на https или localhost, чтобы она работала
Вы можете "json_encode" сначала кодировать свои переменные post через PHP. Затем создайте объект (массив) JS из почтовых переменных, кодированных 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 со значением $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.
Это зависит от того, что вы определяете как JavaScript. В настоящее время у нас фактически есть JS в программах на стороне сервера, таких как NodeJS. Это точно такой же JavaScript, который вы кодируете в своем браузере, за исключением языка сервера. Таким образом, вы можете сделать что-то вроде этого: (Код Кейси Чу: fooobar.com/questions/15951/...)
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;
так далее...
Клиент имеет почтовые данные, потому что клиент отправил почтовые данные. Вы не можете избежать этого факта.
Javascript исключен по дизайну, а не по необходимости.
Переменные 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, используя serialize.
Попробуйте следующее:
$('form').serialize();
Просто включите его, он отобразит все параметры, включая скрытые.
<head><script>var xxx = ${params.xxx}</script></head>
Используя EL выражение ${param.xxx} в <head>
, чтобы получить параметры из метода post, и убедитесь, что файл js включен после <head>
, чтобы вы могли обрабатывать параметр как "xxx" непосредственно в вашем js.