Hoe de parameters voor postverzoeken te lezen met JavaScript

Ik probeer de postverzoekparameters uit mijn HTML te lezen. Ik kan de parameters voor het ophalen van verzoeken lezen met behulp van de volgende code in JavaScript.

$wnd.location.search

Maar het werkt niet voor postverzoeken. Kan iemand me vertellen hoe ik de parameterwaarden van het berichtverzoek in mijn HTML kan lezen met JavaScript?


Antwoord 1, autoriteit 100%

POST-gegevens zijn gegevens die aan de serverzijde worden verwerkt. En Javascript is aan de kant van de klant. U kunt dus op geen enkele manier een berichtgegevens lezen met JavaScript.


Antwoord 2, autoriteit 14%

Een klein stukje PHP om de server een JavaScript-variabele te laten vullen is snel en eenvoudig:

var my_javascript_variable = <?php echo json_encode($_POST['my_post'] ?? null) ?>;

Toegang tot de JavaScript-variabele op de normale manier.

Let op: er is geen garantie dat bepaalde gegevens of soorten gegevens worden gepost, tenzij u dit aanvinkt – alle invoervelden zijn suggesties, geen garanties.


Antwoord 3, autoriteit 6%

JavaScript is een scripttaal aan de clientzijde, wat betekent dat alle code op de computer van de internetgebruiker wordt uitgevoerd. De POST-variabelen gaan daarentegen naar de server en verblijven daar. Browsers leveren die variabelen niet aan de JavaScript-omgeving, en een ontwikkelaar mag ook niet verwachten dat ze daar op magische wijze aanwezig zijn.

Omdat de browser JavaScript geen toegang geeft tot POST-gegevens, is het vrijwel onmogelijk om de POST-variabelen te lezen zonder een externe actor zoals PHP die de POST-waarden in een scriptvariabele of een extensie/add-on herhaalt die de POST-waarden tijdens het transport vastlegt. De GET-variabelen zijn beschikbaar via een tijdelijke oplossing omdat ze in de URL staan ​​die door de clientcomputer kan worden geparseerd.


Antwoord 4, autoriteit 5%

Gebruik sessionStorage!

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

Snippet uitvouwen


Antwoord 5, autoriteit 3%

Waarom gebruikt u geen localStorage of een andere manier om de waarde in te stellen die u
zou willen slagen?

Op die manier heb je er overal toegang toe!

Met overalbedoel ik binnen het opgegeven domein/de gegeven context


Antwoord 6

Je kunt de postverzoekparameter lezen met jQuery-PostCapture(@ssut/jQuery-PostCapture).

De PostCapture-plug-in bestaat uit een aantal trucjes.

Als u op de verzendknop klikt, wordt de gebeurtenis onsubmitverzonden.

Op dat moment zal PostCapture formuliergegevens serialiseren en opslaan in html5 localStorage (indien beschikbaar) of cookie-opslag.


Antwoord 7

Als u met een Java / REST API werkt, is een tijdelijke oplossing eenvoudig. Op de JSP-pagina kunt u het volgende doen:

   <%
    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>

Antwoord 8

Ik heb een eenvoudige code om het te maken:

In uw index.php :

<input id="first_post_data" type="hidden" value="<?= $_POST['first_param']; ?>"/>

In uw main.js:

let my_first_post_param = $("#first_post_data").val();

Dus als je zal main.js in index.php (<script type="text/javascript" src="./main.js"></script>) zou je de waarde van uw verborgen ingang, die je post data bevat te krijgen.


Antwoord 9

POST is wat browser stuurt van client (uw broswer) naar de webserver. Bericht data wordt verzonden naar de server via HTTP headers, en het is alleen beschikbaar op de server einde of tussen het pad (bijvoorbeeld een proxy server) van client (uw browser) naar web-server. Het kan dus niet worden behandeld van client-side scripts, zoals JavaScript. Je moet om te gaan via de server-side scripts zoals CGI, PHP, Java enz. Als u nog nodig hebt om te schrijven in JavaScript je nodig hebt om een ​​web-server, die begrijpt en JavaScript uitvoert in uw server zoals Node.js hebben


Antwoord 10

<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>

Of gebruiken om ze in een woordenboek te zetten die een functie zou kunnen ophalen:

<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>

Toen in 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;
}

Dit is slechts een voorbeeld en mag niet worden gebruikt voor alle gevoelige gegevens zoals een wachtwoord bestaat etc. De POST-werkwijze voor niets; om data te verzenden stevig aan de backend, zodat het doel zou verslaan.

Maar als je gewoon een stel van niet-gevoelige vorm gegevens nodig hebt om uw volgende pagina te gaan zonder /page?blah=value&bleh=value&blahbleh=valuein uw url, zou dit zorgen voor een schonere url en uw JavaScript kan direct communiceren met je POST-gegevens.


Antwoord 11

U kunt ‘json_encode’ eerst coderen je post variabelen via PHP.
Maak vervolgens een JS-object (matrix) van de JSON gecodeerd bericht variabelen.
Maak dan gebruik van een JavaScript-lus om deze variabelen te manipuleren … als – in dit voorbeeld beneden – naar een HTML-formulier vorm bevolken:

<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>

Antwoord 12

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");

Antwoord 13

Eén optie is om een ​​cookie in PHP in te stellen.

Bijvoorbeeld: een cookie met de naam invalidmet de waarde $invalidverloopt over 1 dag:

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

Lees het vervolgens terug in JS (met behulp van de JS Cookieplug-in):

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

Je hebt nu toegang tot de waarde van de variabele invalidin JavaScript.


Antwoord 14

Het hangt af van wat u definieert als JavaScript. Tegenwoordig hebben we eigenlijk JS bij server-side programma’s zoals NodeJS. Het is exact hetzelfde JavaScript dat u in uw browser codeert, behalve als servertaal.
Dus je kunt zoiets als dit doen: (Code door 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.
        });
    }
}

En gebruik daarvoor post['key'] = newVal;etc…


Antwoord 15

POST-variabelen zijn alleen beschikbaar voor de browser als diezelfde browser ze in de eerste plaats heeft verzonden. Als een ander websiteformulier via POST naar een andere URL verzendt, ziet de browser de POST-gegevens niet binnenkomen.

SITE A: laat een formulier verzenden naar een externe URL (site B) met behulp van POST
SITE B: ontvangt de bezoeker maar met alleen GET-variabelen


Antwoord 16

$(function(){
    $('form').sumbit{
        $('this').serialize();
    }
});

In jQuery zou de bovenstaande code u de URL-string geven met POST-parameters in de URL.
Het is niet onmogelijk om de POST-parameters te extraheren.

Als u jQuerywilt gebruiken, moet u de jQuery-bibliotheek opnemen. Gebruik daarvoor het volgende:

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

Antwoord 17

We kunnen de formulierparameters verzamelen die zijn ingediend met POST met behulp van het concept serialiseren.

Probeer dit:

$('form').serialize(); 

Sluit het gewoon een waarschuwing in, het geeft alle parameters weer, inclusief verborgen.


Antwoord 18

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

Gebruik EL-expressie ${param.xxx} in <head>om params uit een post-methode te halen, en zorg ervoor dat het js-bestand is opgenomen na <head>zodat je een parameter als ‘xxx’ direct in je js-bestand kunt verwerken.

Other episodes