将php变量分配给javascript变量

时间:2016-12-26 04:26:56

标签: javascript php jquery

我想将一个php变量分配给javascript变量。

<?php 
  $type =1;  
  $form = ' <script>                
             var jquery_type " <?php = $type;  ?>";
           </script>';            
?>

但是在源页面中,它显示如下,

var jquery_type " <?php = $type; ?>" ;

我怎样才能获得这个php值?

4 个答案:

答案 0 :(得分:1)

  

你在脚本中做错了,你不能在PHP中使用PHP标记。

     

取消管理单(')和双(")引号,导致syntax error, unexpected '='

查看此代码

<?php 
   $type =1;
   $form = '<script> var jquery_type = '.$type.'</script>';
   echo $form;
?>

OR

如果你只想在脚本中分配和使用$type值,那么下面的代码就可以了。

<script>
   var jquery_type = '<?php echo $type ?>';
<script> 

答案 1 :(得分:1)

@RanaRubel您对问题的否定票,因为对于受人尊敬的开发人员而言,这简直是愚蠢的。在服务器计算机上运行的PHP应用程序具有自己的变量范围,该变量范围与JavaScript变量范围完全不同(在您的本地计算机,另一台计算机上运行)。

  • 即使使用一种编程语言,也不能从相同范围传递变量
  • 此外,将变量从一个运行时环境(PHP)传递到另一个(JavaScript)环境是不可能的。
  • 更进一步,将变量从一台机器传递到另一台机器是不可能的。

这就是为什么您获得否定票。

您真正想做的是传递数据,而不是变量。有很多方法可以做到这一点:

1。在体内渲染数据

呈现PHP页面时,还呈现网站主体内的数据。例如,您可以呈现纯JavaScript名称或输入字段

<?php
    $data = "Yolo";
    echo "<script>var data = $data;<script>";
?>

或者您可以呈现输入字段

<?php
    $data = "Yolo";
    echo "<input id="data" value="$data"/>";
?>
<script>
    var data = document.getElementById("data").value;
</script>

这是传递数据的粗略而业余的方式。

2。设置一个cookie

Cookie是发送数据的更高级的方法,因为它们不会干扰您的应用程序视图模型。它们是纯数据。您甚至可以在开发人员控制台中轻松阅读它们。

<?php
    $data = "Yolo";
    setcookie("data", $data);
?>
<script>
    var data = document.cookie;
</script>

不像在体内渲染数据那样糟糕,但是由于Ajax调用更专业,更通用并且可以提供对数据流的更多控制,因此没有使用。

3。呼叫Ajax

这是最复杂的方法,它使程序员可以最大程度地控制如何检索,存储和发送数据。这就是Angular,React或Vue.js等现代前端框架的工作方式。

<?php
    $data = "Yolo";
    echo $data;
?>
<script>
    fetch('/your-script.php')
      .then(response => {
          var data = response;
      })
      .catch(error => console.log('Error loading data', err));
</script>

请记住,fetch()方法仅在较新的浏览器中有效。在较早的版本中,您需要使用XMLHttpRequest或JQuery。

4。分配一个<meta>标签

这是呈现数据的另一种方式,应将其用于更多文档/网页信息,而不是传递作为业务逻辑的数据。这比在原始JavaScript变量或输入中进行渲染要好一些,因为它们会弄乱您的html / css结构以及您的布局。 <meta>标签不会呈现,因此不会弄乱您的布局结构。

<?php
  $data = 'Yolo';
  echo "<meta name='data' content='$data' />";
?>
<script>
  var meta = document.getElementsByTagName('meta')['data'];        
  var data = meta.getAttribute('content');
</script>

答案 2 :(得分:0)

在PHP代码中

$type = 1;  
$form =   '<script>                
            var jquery_type =  "'.$type.'";
            alert(jquery_type);
        </script>';
echo $form;


如果是js文件。

var jquery_type =  " <?php echo $type; ?>";

答案 3 :(得分:0)

根据我的经验,最通用的解决方案始终有效,是这样的:

<html>
...
<input type="hidden" id="hiddenID" value="<?=$myPhpVar;?>" />
....
<script type="text/javascript"> 
   var x = document.getElementById("hiddenID").value;
</script>
...
</html>