簡體   English   中英

在javascript中訪問php變量,反之亦然

[英]Acess php variable in javascript and vise versa

假設我有php頁面index.php

<?php
$x=$_POST[sent]  // I get some value in #x
?>
<html>
<head> 
<script>
function getVar()
{
var x= <How to fetch $x from php code>
alert(x);

}
</script>
</head>
<body> 
<button type="submit"> click </buttton>
</body>

</html>

如何在getVar(_)函數中獲取$ x? 或者另一種情況是JS中有一些變量然后將它變成PHP代碼?

有可能嗎?

其實我有index.php並通過ajax請求加載新頁面url.php。 我想向url.php發送一些變量,並希望在其中的JS代碼中訪問它們。

這是我的ajax請求:

 var id=mydata.id; // Guess I am getting some data here
 $.ajax({
                         url:'url.php'
                         ,async:     true
                         ,cache:     false
                         ,dataType:  'html'
                         ,success:   function(data){
                           $('body').html(data);
                           FB.XFBML.parse();
                         }

我想在ajax請求中將id發送到url.php。 我將其作為$x獲取,並希望在JS代碼中使用它。

php to javascript可以通過使用來完成

<?php $x = "iam a php variable"; ?>
<script>
        function getVar()
        {
        var x= "<?= $x; ?>";
        alert(x);    //alerts **iam a php variable**(value of $x from php)
        }
</script>

反之亦然可以通過Ajax完成 這是一個簡單的例子

<script>
function showUser()
{
var str= "iam a javascript variable";
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    alert(xmlhttp.responseText); //alerts response from php
    }
  }
xmlhttp.open("GET","new.php?q="+str,true); //you can send request through post or get methods 
xmlhttp.send();
}
</script>

在這里,我通過使用GET的ajax在php中獲取一個javascript變量。 在new.php中,我只是打印出通過GET收到的請求

<?php 
    print $_GET["q"];    //prints **iam a javascript variable**(value of str from   javascript) 
?>

PHP和Javascript之間的通信是客戶端 - 服務器通信的典型示例。 在這種情況下,PHP是您的服務器應用程序,Javascript是您的客戶端應用程序。 為此通信建立了許多協議,但您應該查看AJAXRESTful服務。

為了理解發生了什么,我建議您從PHP程序員的角度閱讀有關HTTP和REST的本教程。 在設計客戶端 - 服務器應用程序時,PHP將通過應用業務邏輯和與數據庫通信來“生成”所有內容,並且Javascript會在某些事件(點擊,顯示表等)上向PHP詢問此內容。 PHP而不是輸出HTML將輸出XML或JSON,因此您可以在Javascript中解析和顯示該數據。

如果您只是想將$x變量的值傳遞給JavaScript,那么可以按如下方式完成:

function getVar()
{
    var x= "<?php echo htmlspecialchars($x); ?>";
    alert(x);    
}

這是一個有效的例子:

<?php
    $x = $_POST['sent']  // I get some value in #x
?>
<html>

<head> 
    <script>
    function getVar()
    {
        var x= "<?php echo htmlspecialchars($x); ?>";
        alert(x);
    }
    </script>
</head>

<body> 
    <button type="submit" onclick="getVar()"> click </buttton>
</body>

</html>

如果腳本正確接收到$x變量,那么當您單擊按鈕時它將發出alert

轉移方式:

function getVar($var)
{
var xmlhttp;

    xmlhttp=new XMLHttpRequest();

    xmlhttp.onreadystatechange=function()
      {

      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        $phpVar = xmlhttp.responseText;
            return $phpVar;
        }
      }

    xmlhttp.open("POST","/yourPage.php",true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send("var=" + $var);


}

然后在yourpage.php上:

<?
if (isset($_POST["var"])) {

  die($_POST["var"]);
  }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM