繁体   English   中英

在 JavaScript 中使用 PHP 变量

[英]Use PHP variable in JavaScript

几天来,我一直在寻找可行的解决方案,但我无法让它发挥作用。

我的test.php有以下代码

<?php
    $testNumber = 2;
?>

<script type="text/javascript" src="test.js";
$(function) {
    func(<?php echo json_encode($testNumber); ?>);
});
</script>


以及我的 test.js 中的以下代码

function func(testNumber) {
    if (testNumber > 1){
        alert("function works );
    } else {
        alert("Function does NOT work");
    }
}

func();

当我运行test.php ,我收到警报"Function does NOT work". $testNumber大于 1。

谁能帮我?

与往常一样,您应该查看发送到浏览器的源代码 - 在确定某些东西不起作用的原因时,您的 PHP 是什么样的并不重要。

<script type="text/javascript" src="test.js";
$(function) {
    func(2);
});
</script>

这不是有效的 HTML,因为您应该使用>而不是; 在第一行,你不能有一个既是内部又是外部的<script>标签。

另外, $(function) { func(2); }); $(function) { func(2); }); 甚至不是有效的 JavaScript,但这并不是什么大问题,因为它永远不会被解析为 JS,就像您损坏的<script>元素上的一组奇怪的属性一样。

现在,至于为什么您的脚本不起作用,您正在调用不带参数的func() ,因此testNumber undefined (就像您尝试使用alert(testNumber)看到的那样),因此它不大于 1,因此“功能不起作用”。

将其更改为:

<?php
$testNumber = 2;
?>

<script type="text/javascript" >;    
    function func(testNumber) {
        if (testNumber > 1){
            alert("Function works");
        } else {
            alert("Function does NOT work");
        }
    }
    func(<?php echo $testNumber; ?>);
</script>

我想你正在寻找这样的东西:

<?php
    $testNumber = 2;
?>

<script type="text/javascript">
function func(testNumber) {
    if (testNumber > 1){
        alert("function works ");
    } else {
        alert("Function1 does NOT work");
    }
}


 func(<?php echo json_encode($testNumber); ?>);
</script>
<?php $testNumber = 2; ?>

<script type="text/javascript">
$(document).ready(function() {
    func(<?php echo $testNumber; ?>);

    function func(testNumber) {
        if (testNumber > 1){
            alert("function works );
        } else {
            alert("Function does NOT work");
        }
    }
});
</script>

这是因为当你json_encode变量不再是一个数字

试试这个:

        func(<?php echo (int)$testnumber; ?>);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM