Estou tentando ler os parâmetros de solicitação de postagem do meu HTML. Posso ler os parâmetros de solicitação get usando o seguinte código em JavaScript.
$wnd.location.search
Mas não funciona para solicitação de postagem. Alguém pode me dizer como ler os valores dos parâmetros de solicitação de postagem no meu HTML usando JavaScript?
javascript
html
DonX
fonte
fonte
Um pequeno pedaço de PHP para fazer o servidor preencher uma variável JavaScript é rápido e fácil:
var my_javascript_variable = <?php echo json_encode($_POST['my_post'] ?? null) ?>;
Em seguida, basta acessar a variável JavaScript da maneira normal.
Observe que não há garantia de que qualquer dado ou tipo de dado será postado a menos que você verifique - todos os campos de entrada são sugestões, não garantias.
fonte
JavaScript é uma linguagem de script do lado do cliente, o que significa que todo o código é executado na máquina do usuário da web. As variáveis POST, por outro lado, vão para o servidor e residem nele. Os navegadores não fornecem essas variáveis para o ambiente JavaScript, nem qualquer desenvolvedor deve esperar que elas estejam lá magicamente.
Visto que o navegador não permite que o JavaScript acesse os dados POST, é praticamente impossível ler as variáveis POST sem um ator externo como o PHP ecoando os valores POST em uma variável de script ou uma extensão / addon que captura os valores POST em trânsito. As variáveis GET estão disponíveis por meio de uma solução alternativa porque estão na URL que pode ser analisada pela máquina cliente.
fonte
Use sessionStorage!
$(function(){ $('form').submit{ document.sessionStorage["form-data"] = $('this').serialize(); document.location.href = 'another-page.html'; } });
Em outra página.html:
var formData = document.sessionStorage["form-data"];
Link de referência - https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
fonte
form.on('submit',function(){document.sessionStorage["form-data"] = $('this').serialize();window.location.href = 'another-page.html';})
samesite = None
eSecure
assim o Chrome permite seu uso.Dessa forma, você tem acesso a ele de qualquer lugar!
fonte
cloudianos.com
não alcançariaapi.cloudianos.com
o JavaScript de, pois eles não compartilham o mesmolocalStorage
.Você pode ler o parâmetro de pós-solicitação com jQuery-PostCapture ( @ ssut / jQuery-PostCapture ).
O plugin PostCapture consiste em alguns truques.
Quando você clicar no botão enviar, o
onsubmit
evento será despachado.Nesse momento, o PostCapture serializará os dados do formulário e salvará em html5 localStorage (se disponível) ou armazenamento de cookies.
fonte
POST é o que o navegador envia do cliente (seu navegador) para o servidor web. Os dados de postagem são enviados para o servidor por meio de cabeçalhos http e estão disponíveis apenas na extremidade do servidor ou entre o caminho (exemplo: um servidor proxy) do cliente (seu navegador) para o servidor web. Portanto, não pode ser manipulado a partir de scripts do lado do cliente, como JavaScript. Você precisa lidar com isso por meio de scripts do lado do servidor como CGI, PHP, Java etc. Se você ainda precisa escrever em JavaScript, você precisa ter um servidor web que entenda e execute JavaScript em seu servidor, como Node.js
fonte
Se você estiver trabalhando com uma API Java / REST, uma solução alternativa é fácil. Na página JSP, você pode fazer o seguinte:
<% 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>
fonte
<script> <?php if($_POST) { // Check to make sure params have been sent via POST foreach($_POST as $field => $value) { // Go through each POST param and output as JavaScript variable $val = json_encode($value); // Escape value $vars .= "var $field = $val;\n"; } echo "<script>\n$vars</script>\n"; } ?> </script>
Ou use-o para colocá-los em um dicionário que uma função possa recuperar:
<script> <?php if($_POST) { $vars = array(); foreach($_POST as $field => $value) { array_push($vars,"$field:".json_encode($value)); // Push to $vars array so we can just implode() it, escape value } echo "<script>var post = {".implode(", ",$vars)."}</script>\n"; // Implode array, javascript will interpret as dictionary } ?> </script>
Depois, em JavaScript:
var myText = post['text']; // Or use a function instead if you want to do stuff to it first function Post(variable) { // do stuff to variable before returning... var thisVar = post[variable]; return thisVar; }
Este é apenas um exemplo e não deve ser utilizada para qualquer de dados sensíveis, como uma palavra-passe, etc. existe método POST O para uma razão; para enviar dados com segurança ao back-end, de forma que isso iria contra o propósito.
Mas se você só precisa de um monte de dados de formulário não confidenciais para ir para a próxima página sem
/page?blah=value&bleh=value&blahbleh=value
no seu url, isso tornaria um url mais limpo e seu JavaScript pode interagir imediatamente com seus dados de POST.fonte
Eu tenho um código simples para fazer isso:
Em seu index.php:
<input id="first_post_data" type="hidden" value="<?= $_POST['first_param']; ?>"/>
Em seu main.js:
let my_first_post_param = $("#first_post_data").val();
Portanto, quando você incluir main.js em index.php (
<script type="text/javascript" src="./main.js"></script>
), poderá obter o valor de sua entrada oculta que contém seus dados de postagem.fonte
Você pode 'json_encode' para codificar primeiro suas variáveis de postagem via PHP. Em seguida, crie um objeto JS (array) a partir das variáveis post codificadas em JSON. Em seguida, use um loop JavaScript para manipular essas variáveis ... Como - neste exemplo abaixo - para preencher um formulário de formulário 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>
fonte
Uma opção é definir um cookie no PHP.
Por exemplo: um cookie denominado inválido com o valor de
$invalid
expiração em 1 dia:setcookie('invalid', $invalid, time() + 60 * 60 * 24);
Em seguida, leia novamente em JS (usando o plugin JS Cookie ):
var invalid = Cookies.get('invalid'); if(invalid !== undefined) { Cookies.remove('invalid'); }
Agora você pode acessar o valor da
invalid
variável em JavaScript.fonte
Depende do que você define como JavaScript. Hoje em dia, temos JS em programas do lado do servidor, como NodeJS. É exatamente o mesmo JavaScript que você codifica em seu navegador, exceto como uma linguagem de servidor. Então, você pode fazer algo assim: ( Código de Casey Chu: 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. }); } }
E daí usar
post['key'] = newVal;
etc ...fonte
Variáveis POST só estão disponíveis para o navegador se esse mesmo navegador as enviou em primeiro lugar. Se outro formulário de site for enviado via POST para outro URL, o navegador não verá os dados do POST chegando.
SITE A: possui um formulário de envio para uma URL externa (site B) usando POST SITE B: receberá o visitante mas apenas com variáveis GET
fonte
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");
fonte
$(function(){ $('form').sumbit{ $('this').serialize(); } });
Em jQuery, o código acima forneceria a string URL com parâmetros POST na URL. Não é impossível extrair os parâmetros POST.
Para usar jQuery , você precisa incluir a biblioteca jQuery. Use o seguinte para isso:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
fonte
Podemos coletar os parâmetros de formulário enviados usando POST com o uso de conceito de serialização .
Experimente isto:
$('form').serialize();
Basta incluí-lo em alerta, ele exibe todos os parâmetros incluindo ocultos.
fonte
<head><script>var xxx = ${params.xxx}</script></head>
Usando a expressão EL $ {param.xxx}
<head>
para obter parâmetros de um método post e certifique-se de que o arquivo js seja incluído depois<head>
para que você possa manipular um parâmetro como 'xxx' diretamente em seu arquivo js.fonte