我有一个页面,我收集了两个变量,我想把这些变量传递给我的文档准备函数。但是出于某种原因…我的测试警报只是输出行代码,而不是结果。
只是为了说明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" )
不要因为别人对你说"你不能做这个不能做那个"就放弃;-)