需要棘手的想法在PHP中使用JS变量

时间:2014-08-13 08:42:58

标签: javascript php

在PHP中使用JS变量需要一个棘手的想法。想要以棘手的方式显示数组值。

<?php
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
?>

var varCounter = 0;
var varName = function() {
    if (varCounter <= 2) {
        varCounter++;
        document.write("<?php echo $cars[varCounter]; ?>");
    } else {
        clearInterval(varName);
    }
};

3 个答案:

答案 0 :(得分:3)

当php是服务器端语言时,你必须使用ajax,因为javascript是一种客户端语言。在将页面发送到浏览器之前执行php,然后javascript是渲染器。

如果您愿意使用php生成javascript,则值将打印在代码中。但你必须修改javascript生成。

答案 1 :(得分:3)

这是创建间隔的方式:

var intervalID = window.setInterval(code, delay);
  1. 变量varName不是intervalID
  2. writedocument.write('<?php echo $cars[varCounter]; ?>')的参数在前端不会改变。它只会打印一个静态值(在这种情况下为“Volvo”)。
  3. 您需要使用AJAX与PHP后端动态交互。

答案 2 :(得分:2)

考虑以下内容,当PHP代码在服务器上运行时,所有数据都嵌入在JavaScript(HTML)中。因此PHP永远不会看到&#34; JavaScript值,但JS可以访问所有可能的PHP值。

这些值(在PHP生成的HTML中再次嵌入)通过json_encode在一个漂亮的包中提供 - 对于JS Object Literals,JSON为"close enough"可靠地工作(没有JSON_UNESCAPED_UNICODE选项的json_encode也不受链接狡辩的影响)。

<?php
    // Array values come from PHP
    $cars = array("Volvo", "BMW", "Toyota");
?>

<script>
// Don't forget JSON_HEX_TAG when using this method!
var cars = <?php echo json_encode($cars, JSON_HEX_TAG); ?>;
// Equivalent to the following with the above data, but in Real Life
// the data might come from a dynamic source or also be used in PHP.
// var cars = ["Volvo", "BMW", "Toyota"];

// Now all the data is available to JavaScript, which can be treated as
// a normal JavaScript array.
var varCounter = 0;
var varName = function() {
    if (varCounter < cars.length) {
        // Do *not* use document.write after the document is closed
        alert(cars[varCounter]);
        varCounter++;
    } else {
        clearInterval(varName);
    }
};

// etc.
</script>