Hoe geef ik JavaScript-variabelen door aan PHP?

Ik wil JavaScript-variabelen doorgeven aan PHP met behulp van een verborgen invoer in een formulier.

Maar ik krijg de waarde van $_POST['hidden1']niet in $salarieid. Is er iets mis?

Hier is de code:

<script type="text/javascript">
    // View what the user has chosen
    function func_load3(name) {
        var oForm = document.forms["myform"];
        var oSelectBox = oForm.select3;
        var iChoice = oSelectBox.selectedIndex;
        //alert("You have chosen: " + oSelectBox.options[iChoice].text);
        //document.write(oSelectBox.options[iChoice].text);
        var sa = oSelectBox.options[iChoice].text;
        document.getElementById("hidden1").value = sa;
    }
</script>
<form name="myform" action="<?php echo $_SERVER['$PHP_SELF']; ?>" method="POST">
    <input type="hidden" name="hidden1" id="hidden1" />
</form>
<?php
   $salarieid = $_POST['hidden1'];
   $query = "select * from salarie where salarieid = ".$salarieid;
   echo $query;
   $result = mysql_query($query);
?>
<table>
   Code for displaying the query result.
</table>

Antwoord 1, autoriteit 100%

U kunt geen variabele waarden van de JavaScript-code van de huidige pagina doorgeven aan de PHP-code van de huidige pagina… PHP-code wordt aan de serverzijde uitgevoerd en weet niets over wat er aan de clientzijde gebeurt.

p>

U moet variabelen doorgeven aan PHP-code vanuit het HTML-formulier met behulp van een ander mechanisme, zoals het indienen van het formulier met behulp van de GET- of POST-methoden.

<DOCTYPE html>
<html>
  <head>
    <title>My Test Form</title>
  </head>
  <body>
    <form method="POST">
      <p>Please, choose the salary id to proceed result:</p>
      <p>
        <label for="salarieids">SalarieID:</label>
        <?php
          $query = "SELECT * FROM salarie";
          $result = mysql_query($query);
          if ($result) :
        ?>
        <select id="salarieids" name="salarieid">
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<option value="', $row['salaried'], '">', $row['salaried'], '</option>'; //between <option></option> tags you can output something more human-friendly (like $row['name'], if table "salaried" have one)
            }
          ?>
        </select>
        <?php endif ?>
      </p>
      <p>
        <input type="submit" value="Sumbit my choice"/>
      </p>
    </form>
    <?php if isset($_POST['salaried']) : ?>
      <?php
        $query = "SELECT * FROM salarie WHERE salarieid = " . $_POST['salarieid'];
        $result = mysql_query($query);
        if ($result) :
      ?>
        <table>
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<tr>';
              echo '<td>', $row['salaried'], '</td><td>', $row['bla-bla-bla'], '</td>' ...; // and others
              echo '</tr>';
            }
          ?>
        </table>
      <?php endif?>
    <?php endif ?>
  </body>
</html>

Antwoord 2, Autoriteit 30%

Sla het gewoon op in een cookie:

$(document).ready(function () {
  createCookie("height", $(window).height(), "10");
});
function createCookie(name, value, days) {
  var expires;
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toGMTString();
  }
  else {
    expires = "";
  }
  document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}

En lees het dan met PHP:

<?PHP
   $_COOKIE["height"];
?>

Het is geen mooie oplossing, maar het werkt.


Antwoord 3, autoriteit 19%

Er zijn verschillende manieren om variabelen van JavaScript naar PHP door te geven (niet de huidige pagina natuurlijk).

Je zou kunnen:

  1. Stuur de informatie in een formulier zoals hier vermeld (zal resulteren in een paginavernieuwing)
  2. Geef het door in Ajax (er staan hier meerdere berichten over) (zonder paginaverversing)
  3. Maak een HTTP-verzoek via een XMLHttpRequest-verzoek (zonder paginavernieuwing) als volgt:

if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
 }
else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 }
 var PageToSendTo = "nowitworks.php?";
 var MyVariable = "variableData";
 var VariablePlaceholder = "variableName=";
 var UrlToSend = PageToSendTo + VariablePlaceholder + MyVariable;
 xmlhttp.open("GET", UrlToSend, false);
 xmlhttp.send();

Ik weet zeker dat dit er mooier uit zou kunnen zien en alle variabelen en zo doorloopt – maar ik heb het eenvoudig gehouden om het voor beginners gemakkelijker te begrijpen.


Antwoord 4, autoriteit 13%

Hier is het werkvoorbeeld: haal de waarde van de javascript-variabele op dezelfde pagina in php.

<script>
var p1 = "success";
</script>
<?php
echo "<script>document.writeln(p1);</script>";
?>

Antwoord 5, autoriteit 8%

Hier is hoe ik het deed (ik moest een lokale tijdzone invoegen in PHP:

<?php
    ob_start();
?>
<script type="text/javascript">
    var d = new Date();
    document.write(d.getTimezoneOffset());
</script>
<?php
    $offset = ob_get_clean();
    print_r($offset);

Antwoord 6, autoriteit 7%

Ik probeerde dit zelf uit te zoeken en realiseerde me toen dat het probleem is dat dit een soort achterwaartse manier is om naar de situatie te kijken. In plaats van te proberen dingen van JavaScript naar php door te geven, is het misschien het beste om in de meeste gevallen andersom te gaan. PHP-code wordt uitgevoerd op de server en maakt de html-code (en mogelijk ook java-script). Vervolgens laadt de browser de pagina en voert het html- en javascript uit.

Het lijkt erop dat de verstandige manier om dit soort situaties aan te pakken, is door PHP te gebruiken om het gewenste JavaScript en de gewenste html te maken en vervolgens het JavaScript op de pagina te gebruiken om te doen wat PHP niet kan. Het lijkt erop dat dit je op een vrij eenvoudige en ongecompliceerde manier de voordelen van zowel PHP als JavaScript zou geven.

Eén ding dat ik heb gedaan waardoor het lijkt alsof je dingen direct vanaf je pagina doorgeeft aan PHP, is het gebruik van de html-afbeeldingstag om PHP-code aan te roepen. Zoiets als dit:

<img src="pic.php">

De PHP-code in Pic.Php zou daadwerkelijk HTML-code maken voordat uw webpagina zelfs is geladen, maar dat HTML-code in principe op de vlucht wordt opgeroepen. De PHP-code hier kan worden gebruikt om een ​​foto op uw pagina te maken, maar het kan eventuele opdrachten hebben die u wilt behalve dat erin. Misschien verandert het de inhoud van sommige bestanden op uw server, enz. De ondersteboven hiervan is dat de PHP-code kan worden uitgevoerd vanuit HTML en ik neem aan dat JavaScript is, maar de volgende kant is dat de enige uitvoer die het op uw pagina kan plaatsen, maar afbeelding. U hebt ook de mogelijkheid om variabelen door te geven aan de PHP-code via parameters in de URL. Pagina-tellers gebruiken deze techniek in veel gevallen.


Antwoord 7, Autoriteit 7%

Wanneer uw pagina eerst de PHP-code laadt en stel eerst de volledige lay-out van uw webpagina in. Na de pagina-indeling stelt het de JavaScript-lading in. Nu interageert JavaScript rechtstreeks met DOM en kan de lay-out manipuleren, maar PHP kan het niet nodig hebben om de pagina te vernieuwen. Er is alleen een manier om uw pagina op te frissen naar en de parameters door te geven in de PAGE-URL, zodat u de gegevens via PHP kunt krijgen. Dus we gebruiken AJAX om JavaScript te interageren met PHP zonder pagina opnieuw laden. Ajax kan ook als API worden gebruikt. Nog een ding als u de variabele in PHP al hebt verklaard. Vóór de lading van de pagina kunt u het gebruiken met uw JavaScript-voorbeeld.

<script>
var username = "<?php echo $myname;?>";
alert(username);
</script>

De bovenstaande code is correct en het werkt. Maar de onderstaande code is totaal verkeerd en het zal nooit werken.

<script>
    var username = "syed ali";
    var <?php $myname;?> = username;
    alert(myname);
    </script>
  • Waarde doorgeven van JavaScript naar PHP via AJAX

    het is de veiligste manier om dit te doen. omdat HTML-inhoud kan worden bewerkt via ontwikkelaarstools en de gebruiker de gegevens kan manipuleren. dus het is beter om AJAX te gebruiken als je beveiliging wilt over die variabele. Als je een beginner bent met AJAX, leer dan AJAX, het is heel eenvoudig.

De beste en veiligste manier om JavaScript-variabele door te geven aan PHP is:
via Ajax

eenvoudig AJAX-voorbeeld

var mydata = 55;
var myname = "syed ali";
var userdata = {'id':mydata,'name':myname};
    $.ajax({
            type: "POST",
            url: "YOUR PHP URL HERE",
            data:userdata, 
            success: function(data){
                console.log(data);
            }
            });
  • PASS waarde van javascript naar php via verborgen velden.

anders kunt u verborgen HTML-invoer in uw formulier maken. leuk vinden

<input type="hidden" id="mydata">

geef vervolgens via jQuery of javaScript de waarde door aan het verborgen veld. leuk vinden

<script>
var myvalue = 55;
$("#mydata").val(myvalue);
</script>

Als u nu het formulier verzendt, kunt u de waarde in PHP krijgen.


Antwoord 8, autoriteit 6%

PHP draait op de server voordat de pagina naar de gebruiker wordt verzonden, JavaScript wordt uitgevoerd op de computer van de gebruiker zodra het is ontvangen, dus het PHP-script is al uitgevoerd.

Als je een JavaScript-waarde wilt doorgeven aan een PHP-script, moet je een XMLHttpRequest doen om de gegevens terug te sturen naar de server.

Hier is een eerdere vraag die u kunt volgen voor meer informatie: Ajax-zelfstudie

Als je nu alleen een formulierwaarde aan de server moet doorgeven, kun je ook gewoon een normale formulierpost doen, die hetzelfde doet, maar de hele pagina moet worden vernieuwd.

<?php
if(isset($_POST))
{
  print_r($_POST);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="text" name="data" value="1" />
  <input type="submit" value="Submit" />
</form>

Als u op verzenden klikt, wordt de pagina verzonden en worden de ingediende gegevens afgedrukt.


Antwoord 9, autoriteit 5%

We kunnen gemakkelijk waarden doorgeven, zelfs op dezelfde/verschillende pagina’s met behulp van de cookies die als volgt in de code worden getoond (in mijn geval gebruik ik het met Facebook-integratie) –

function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    if (response.status === 'connected') {
        // Logged into your app and Facebook.
        FB.api('/me?fields=id,first_name,last_name,email', function (result) {
            document.cookie = "fbdata = " + result.id + "," + result.first_name + "," + result.last_name + "," + result.email;
            console.log(document.cookie);
        });
    }
}

En ik heb er toegang toe gekregen (in elk bestand) met –

<?php 
    if(isset($_COOKIE['fbdata'])) { 
        echo "welcome ".$_COOKIE['fbdata'];
    }
?>

Antwoord 10, autoriteit 3%

Er zijn een paar dingen mis met je code.

  • U definieert een JavaScript-functie, func_load3(), maar roept deze niet aan.
  • Uw functie is op de verkeerde plaats gedefinieerd. Wanneer het op uw pagina is gedefinieerd, zijn de HTML-objecten waarnaar het verwijst nog niet geladen. De meeste JavaScript-code controleert of het document volledig is geladen voordat het wordt uitgevoerd, of u kunt uw code gewoon voorbij de elementen verplaatsen waarnaar het op de pagina verwijst.
  • Uw formulier kan het niet verzenden. Het heeft een verzendknop nodig.
  • U controleert niet of uw formulier is verzonden.

Het is mogelijk om een JavaScript-variabele in een verborgen variabele in een formulier in te stellen, deze vervolgens in te dienen en de waarde terug te lezen in PHP. Hier is een eenvoudig voorbeeld dat dit laat zien:

<?php
if (isset($_POST['hidden1'])) {
   echo "You submitted {$_POST['hidden1']}";
   die;
}
echo <<<HTML
   <form name="myform" action="{$_SERVER['PHP_SELF']}" method="post" id="myform">
      <input type="submit" name="submit" value="Test this mess!" />
      <input type="hidden" name="hidden1" id="hidden1" />
   </form>
   <script type="text/javascript">
      document.getElementById("hidden1").value = "This is an example";
   </script>
HTML;
?>

Antwoord 11, autoriteit 2%

Wordt uw functie, die de verborgen vormwaarde instelt, aangeroepen? In dit voorbeeld is dat niet het geval. U zou geen probleem moeten hebben om een verborgen waarde te wijzigen voordathet formulier terug naar de server wordt gepost.


Antwoord 12

Misschien zou je de jQuery serialize()-methode kunnen gebruiken, zodat alles in één keer kan.

var data=$('#myForm').serialize();

//op deze manier zou je de verborgen waarde ook aan de serverkant kunnen krijgen.


Antwoord 13

U kunt de JQuery Ajax- en POST-methode gebruiken:

var obj;
$(document).ready(function(){
            $("#button1").click(function(){
                var username=$("#username").val();
                var password=$("#password").val();
  $.ajax({
    url: "addperson.php",
    type: "POST", 
    async: false,
    data: {
        username: username,
        password: password
    }
})
.done (function(data, textStatus, jqXHR) { 
   obj = JSON.parse(data);
})
.fail (function(jqXHR, textStatus, errorThrown) { 
})
.always (function(jqXHROrData, textStatus, jqXHROrErrorThrown) { 
});
            });
        });

Om een reactie van het php-script terug te halen, ontleden JSON de reactie in de methode .done().
Hier is het php-script dat u aan uw behoeften kunt aanpassen:

<?php
     $username1 = isset($_POST["username"]) ? $_POST["username"] : '';
     $password1 = isset($_POST["password"]) ? $_POST["password"] : '';
$servername = "xxxxx";
$username = "xxxxx";
$password = "xxxxx";
$dbname = "xxxxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO user (username, password)
VALUES ('$username1', '$password1' )";
    ;  
if ($conn->query($sql) === TRUE) {
   echo json_encode(array('success' => 1));
} else{
  echo json_encode(array('success' => 0));
}
$conn->close();
?>

Antwoord 14

Deze oplossing is duidelijk niet eerder genoemd. U kunt ook cookies gebruiken om gegevens van de browser terug naar de server te sturen.

Stel gewoon een cookie in met de gegevens die u naar PHP wilt doorgeven met JavaScript in de browser.

Lees dan eenvoudig deze cookie aan de PHP-kant.


Antwoord 15

We kunnen JavaScript-variabele waarden rechtstreeks doorgeven aan de PHP-code … PHP-code werkt aan de serverzijde, en het weet niets van wat er aan de hand is op de kant van de klant.

Dus het is beter om de AJAX te gebruiken om de JavaScript-waarde te ontleden in de PHP-code.

of als alternatief kunnen we dit doen met de hulp van cookies in onze code.

Bedankt & amp; Proost.

Other episodes