PHP, JavaScript değişkenleri geçmek için?

8 Cevap php

Ben bir formda gizli girişini kullanarak PHP, JavaScript değişkenleri geçmek istiyorum.

Ama ben $salarieid içine $_POST['hidden1'] değerini alınamıyor. Yanlış bir şey var mı?

İşte kod:

<script type="text/javascript">
// view which the user has chosen
function func_load3(name){
    var oForm = document.forms["myform"];
    var oSelectBox = oForm.select3;
    var iChoice = oSelectBox.selectedIndex;
    //alert("you have choosen: " + 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 display the query result. 
</table>

Tavsiye için teşekkürler.

8 Cevap

Geçerli sayfayı PHP kodu için geçerli sayfa javascript Değişken değerlerini geçemez ... PHP kodu sunucu tarafında çalışır ve istemci tarafında neler olup bittiğini hakkında hiçbir şey bilmiyor.

Bu tür GET veya POST yöntemleri formu göndererek olarak başka bir mekanizma kullanarak html formundan PHP kodu değişkenleri geçmesi gerekiyor.

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

Sayfa kullanıcıya gönderilmeden önce PHP sunucu üzerinde çalışan, JavaScript alındığı zamanlar Kullanıcının bilgisayarda çalıştırıldığında, böylece PHP komut dosyası zaten yürüttü.

Eğer bir PHP komut dosyası için bir JavaScript değer geçmek isterseniz, geri sunucuya veri göndermek için bir XMLHttpRequest yapmak olurdu.

Ajax Tutorial: Burada daha fazla bilgi için takip edebilirsiniz bir önceki soru

Sadece sunucuya bir form değer geçmek gerekiyorsa Şimdi, siz de sadece aynı şeyi yapar, normal bir şekilde yazı, yapabilir, ama bütün sayfa yenilendiğinde olmak zorundadır.

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

Göndermek tıklayarak sayfayı göndermek ve gönderilen verileri yazdırmak olacaktır.

Php javascript değişkenleri geçen birkaç yolu (değil Geçerli sayfayı elbette) vardır

Şunları yapabilirsiniz:

  1. Burada belirtildiği gibi bir formda bilgi göndermek, (bir sayfa yenileme neden olacaktır)
  2. (sayfa yenileme olmadan) ajax (burada bu konuda birkaç Mesajları) geçmek
  3. Bu gibi (bir sayfa yenileme olmadan) bir XMLHttpRequest isteği ile bir http isteği olun:
<script>
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 + VariablePlaceholder;

xmlhttp.open("GET", UrlToSend, false);
xmlhttp.send();
</script>

Ama ben daha kolay acemiler için anlamak yapmak gibi temel tuttum - Ben bu etajer meraklısı ve döngü tüm değişkenler aracılığıyla ve görünmek için yapılmış olabilir emin değilim.

Bu kendimi anlamaya çalışıyorum ve sonra sorunun bu tür duruma bakarak bir geriye bir yol olduğunu fark edildi. Aksine java dan php şeyler geçmek için çalışırken daha, belki de çoğu durumda, başka bir yol etrafında gitmek en iyisidir. PHP kodu sunucu üzerinde yürütür ve html kodunu (ve muhtemelen java script gibi) oluşturur. Ardından tarayıcı sayfasını yükler ve html ve java script çalıştırır.

Bu gibi durumlarda yaklaşım mantıklı yol istediğiniz java script ve html oluşturmak için PHP kullanmak ve daha sonra PHP yapamaz ne yapmak sayfada java script kullanmak gibi görünüyor. Bu size oldukça basit ve yalındır şekilde PHP ve Java Script hem yararları verecek gibi görünüyor.

Anında sayfanızdan PHP şeyler geçen bir görünüm kazandırıyor Yaptığım tek şey PHP kodu çağırmak için html resim etiketini kullanıyor. Böyle bir şey:

Pic.php içinde PHP kodu web sayfası bile yüklenmesinden önce aslında html kodunu yaratacak, ama bu html kodunu temelde anında üzerine denir. Burada php kod sayfanızda bir resim oluşturmak için kullanılan olabilir, ama bunu o yanında gibi tüm komutları olabilir. Belki de bu ters php kod html çalıştırılabilir ve ben java script olduğunu varsayalım vb, sunucu üzerinde bazı dosyaların içeriğini değiştirir, ama aşağı tarafı sayfanızda koyabilirsiniz tek çıkış olduğunu bir görüntü. Ayrıca url parametreleri aracılığıyla php kodu değişkenleri geçen seçeneği var. Sayfa sayaçları birçok durumda bu tekniği kullanır.

Çağrıldığını, gizli form değerini ayarlar sizin fonksiyonu mi? Bu örnekte değildir. Sen gizli bir değere before sunucuya geri gönderme formunu değiştirerek hiçbir sorun olmalıdır.

sadece bir tanımlama kaydedin:

<script>
 $(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=/";
 }
</script> 

ve daha sonra php ile okumak

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

its not a pretty solution, but it works. Cheers.

AJAX bu durumda yardımcı olabilir. Eğer uyumsuz sayfa istemiyorsanız, o zaman formda gizli alanları kullanın.

Bu google üst arama olduğundan, gelecekte bu kadar bakmak böylece diğer insanlar basit bir cevap aramaya devam etmek zorunda değilsiniz, bu soruya basit bir cevap vermek istiyorum.

This is the easiest way I found to pass an arbitrary javascript variable into a php variable. (Don't forget you should be running MAMP or LAMP and also jQuery)

. Php web sayfasının kod:

        <script>

        var myData = "Hello";

        function AJAXAction ()
        {
            $.ajax({
                url: 'THESECONDPHPPAGE.php',
                data: { myPhpData: myData },
               success: function (response) {
                alert (response);
               }
            }); 
        }

        </script>

. Ajax tarafından çağrılan işlev için ayrı php sayfasındaki kod:

            <?php

            function goDoIt () 
            {
                    $why = $_GET['myPhpData'];  
                    echo $why;
            }

            goDoIt ();  

            ?>