PHP bir JavaScript değişken erişmek

6 Cevap php

I PHP ile JavaScript değişkeni erişmek gerekir. İşte şu anda çalışmıyor, hangi çalışıyorum kod elimden aşağı versiyonu:

<script type="text/javascript" charset="utf-8">
    var test = "tester";
</script>

<?php
    echo $_GET['test'];
?>

Ben JavaScript ve PHP hem de tamamen yeni değilim, bu yüzden gerçekten herhangi bir tavsiye seviniriz.

UPDATE: Tamam, ben çok fazla basitleştirilmiş sanırım. Ne yapmaya çalışıyorum sunulan zaman bir Twitter durumunuzu güncelleyebilir bir form oluşturun. Tamam çalışma formu var, ama aynı zamanda konum belirleme veri eklemek istiyorum. Ben yerini almak için Javascript (özellikle, Google Konum API) istimal beri formunu teslim ediyorum ne zaman, nasıl ben PHP ile bu bilgilere erişebilir mi?

6 Cevap

Kısa cevap you can't.

Ben herhangi bir PHP sözdizimi biliyorum, ama ne söyleyebilirim PHP sunucu üzerinde yürütülür ve JavaScript (tarayıcısında) istemci üzerinde yürütülen olduğunu bilmiyorum.

Sen için kullanılan bir $ _GET, yapıyoruz retrieve form values:

Yerleşik $ _GET fonksiyonu yöntemi = "get" ile bir form değerleri toplamak için kullanılır.

Diğer bir deyişle, eğer sayfada size vardı:

<form method="get" action="blah.php">
    <input name="test"></input>
</form>

Sizin $ _GET çağrı bu giriş alanındaki değerini almak istiyorum.

Peki nasıl JavaScript bir değer almak için?

Peki, gizli bir form alanında javascript değerini sopa ...

<script type="text/javascript" charset="utf-8">
    var test = "tester";
    // find the 'test' input element and set its value to the above variable
    document.getElementByID("test").value = test;
</script>

... elsewhere on your page ...

<form method="get" action="blah.php">
    <input id="test" name="test" visibility="hidden"></input>
    <input type="submit" value="Click me!"></input>
</form>

Kullanıcı Gönder düğmesini tıkladığında Sonra, o / o 'test' olarak değer boyunca göndererek, blah.php bir "GET" isteği veren edilecektir.

JavaScript istemci tarafı dilidir ve PHP fiziksel PHP komut dosyası (script.php? Var = testi sayfa yük değişken dahil biriyle, PHP komut dosyası değişkeni itmek gerekir, bir sunucu tarafı dil olarak ), hangi gerçekten JavaScript ile ilgisi yoktur, ya da yoluyla PHP değişken ileterek bir AJAX / AHAH değişken değiştirildiğinde her zaman diyoruz.

Eğer ikinci yolu aşağı gitmek istemiyordu, sen XMLHttpRequest bakarak, ya da benim tercih olurdu, jQuerys Ajax çağırır: http://docs.jquery.com/Ajax

_GET Test sorgu dizesi değişkeni (PHP herhangi bir şekilde JS işlemez) değildir, sorgu dizesi değişkenleri erişir. Sen düşünmek gerekiyor. Sen bir php değişken $ testi yapmak, ve benzeri bir şey yapabilirdi:

<?php
$test = "tester";
?>
<script type="text/javascript" charset="utf-8">
    var test = "<?php echo $test?>";
</script>

<?php
    echo $test;
?>

Tabii ki, bu istediğiniz neden bilmiyorum, bu yüzden en iyi çözüm emin değilim.

EDIT: Diğerleri de belirtildiği gibi JavaScript değişken gerçekten istemci üzerinde oluşturulur ise, sunucuya göndermek için AJAX veya bir form gerekir.

Kullanıcıya verilerini gösteren eğer, bir yönlendirme yapın:

<script language="JavaScript">
    var tester = "foobar";
    document.location="http://www.host.org/myphp.php?test=" + tester;
</script>

veya bir iframe:

<script language="JavaScript">
    var tester = "foobar";
    document.write("<iframe src=\"http://www.host.org/myphp.php?test=" + tester + "\"></iframe>");
</script>

Kullanıcı çıkışı ihtiyacınız yoksa, width = 0 ve yükseklik = 0 ile bir iframe oluşturmak.

Peki GET ile sorun kullanıcı o bazı bilgilerin varsa kendisi ile değerini değiştirmek mümkün olmasıdır. PHP Javascript dilimini retrive mümkün olduğu kadar ben bu yazdı:

/ / - Index.php

<?php
  if (!isset($_COOKIE['timezone'])) {
?>
<html>
<script language="javascript">  
  var d = new Date(); 
  var timezoneOffset = d.getTimezoneOffset() / 60;
  // the cookie expired in 3 hours
  d.setTime(d.getTime()+(3*60*60*1000));
  var expires = "; expires="+d.toGMTString();
  document.cookie = "timezone=" +  timezoneOffset + expires + "; path=/";
  document.location.href="index.php"
</script>
</html>
<?php
} else {
  ?>

  <html>
  <head>
  <body>

  <?php 
  if(isset($_COOKIE['timezone'])){ 
    dump_var($_COOKIE['timezone']); 
  } 
}
?>

JS ist tarayıcı-tabanlı, PHP sunucu tabanlı. Sen PHP içine JS verileri almak için bazı tarayıcı-tabanlı istek / sinyali üretmek zorunda. Ajax içine bir göz atın.