设置Javascript变量从PHP获取变量


Set Javascript Variable From PHP Get Variable

我有一个页面,我收集了两个变量,我想把这些变量传递给我的文档准备函数。但是出于某种原因…我的测试警报只是输出行代码,而不是结果。

只是为了说明JS脚本在另一个文件中,该文件链接到该页面。

PHP

<?php 
$cardid = test;
$custid = test;
?>
Javascript

$(document).ready(function(){
   var custid = '<?php echo($custid); ?>';
   var cardid = '<?php echo($cardid); ?>';
   alert(custid);
   alert(cardid);
});

将javascript代码放到script标签下的单独php文件中:

<script>
    $(document).ready(function(){
       var custid = '<?php echo($custid); ?>';
       var cardid = '<?php echo($cardid); ?>';
       alert(custid);
       alert(cardid);
   })
</script>

在你的主php文件中包含这个文件(使用Include函数)。在单独的.js文件中执行php是不可能的。

你没有给你的PHP变量赋值:

$cardid = test;
$custid = test;

在PHP中,非数字且不在引号之间的值被认为是常量。而常量test在PHP环境中很可能没有价值。

你想要赋值一个字符串,我猜,所以不要忘记引号:

$cardid = "test";
$custid = "test";

概念错误。你的JS不能被PHP解析,所以你的方法行不通。让它工作:

你必须用一个技巧把变量交给JS:把它写进HTML的script-tag中,然后你可以在JS中访问它们。

假设您在PHP中生成了如下HTML:

<body>
 <div>Hello World</div>
</body>

现在,为你的JS写入变量,这里有一个简单的方法:

echo "<script>var myVar1='".$_GET['var1']."';</script>'n";
echo "<body>'n";
echo "  <div>Hello World</div>'n";
echo "</body>'n";

好,非常简单,在现实中不要这样做,但你明白这个概念吗?所以,这就是做这个的技巧。

注:同样的方法,你得到$_POST Data到你的JS;)

考虑使用引号来表示字符串。

<?php 
$cardid = 'test';
$custid = 'test';
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.js"></script>
<script>
$(document).ready(function(){
   var custid = '<?php echo($custid); ?>';
   var cardid = '<?php echo($cardid); ?>';
   alert(custid);
   alert(cardid);
});
</script>

PHP代码将只在以.php结尾的文件中运行。您的.js文件直接加载,不受PHP处理。如果您希望将PHP变量的值分配给javascript变量,则需要在.php文件中的脚本块中这样做。

例如,如果你把这个添加到你的.php文件-

<script type="javascript">
  var custid = '<?php echo $custid; ?>';
  var cardid = '<?php echo $cardid; ?>';
</script>
然后在你的.js文件应该看起来像-
$(document).ready(function(){
   alert(custid);
   alert(cardid);
});

当然可以在.js文件中运行PHP。在将PHP作为Apache模块运行的情况下,您可以添加任何希望Apache识别为PHP脚本的扩展,例如:

AddType application/x-httpd-php .php .html .htm .js

从php5.3开始,你可能会遇到问题,所以你可以尝试:

AddHandler application/x-httpd-php7 .php .html .htm .js
AddHandler application/x-httpd-php .php .html .htm .js
AddHandler x-httpd-php .php .html .htm .js

如果你仍然有问题,使用301重定向或重写规则在你的。htaccess,像这样:

Redirect 301 "^(.*)/dir/example.js$" "http://www.domain.de/dir/example.php" [NC,L,QSA]

如果你是在lighttpd上,请进入/etc/lighttpd.conf或在windows上C:'lighttpd'etc'lighttpd.conf,取消注释"mod_cgi"行并添加以下行:

cgi.assign = ( ".js" => "c:/php/php-cgi.exe" )

不要因为别人对你说"你不能做这个不能做那个"就放弃;-)