【问题标题】:How to use JavaScript variable in PHP?如何在 PHP 中使用 JavaScript 变量?
【发布时间】:2011-12-12 23:15:42
【问题描述】:

我正在尝试这段代码:

<script type="text/javascript">
for (i = 0; i < 5; i++) {
    for (x = 0; x < 1; x++) {
        $("#one" + i).html("<?php echo $arr["+i+"]["+x+"] ?>");
        $("#two" + i).html("<?php echo $arr["+i+"]["+x+1+"] ?>");
    };
};

</script>

没有显示错误,但内容也没有。

如何在 PHP 代码中使用 JavaScript 的增量变量?

谢谢

【问题讨论】:

  • 只是说,(x = 0; x

标签: php javascript arrays loops


【解决方案1】:

您可以让 JS 访问您的 PHP 数组(将其存储为 js 变量):

<script type="text/javascript">
var arr=<?php echo json_encode($arr); ?>;
for (i = 0; i < arr.length; i++) {
    for (x = 0; x < 1; x++) {
        $("#one" + i).html(arr[i][x]);
        $("#two" + i).html(arr[i][x+1]);
    };
};
</script>

【讨论】:

  • 您的循环从 0 运行到 4,但只有 3 个项目。当我谈到 3(arr[3] 不存在)时,你会得到一个错误。查看我更新的代码,使用arr.length而不是固定的5来避免这个错误。
【解决方案2】:

你不能这样做。

Javascript 在客户端运行,这是 所有 PHP 代码执行之后。

为什么不用 PHP 编写循环呢?例如,

<script type="text/javascript">
<?php
for ($i = 0; $i < 5; $i++) {
    for ($x = 0; $x < 1; $x++) {
        printf('$("#one%s").html("%s");', $i, $arr[$i][$x]);
        printf('$("#two%s").html("%s");', $i, $arr[$i][$x + 1]);
    };
};
?>
</script>

【讨论】:

  • 乔恩,我完全糊涂了。我唯一知道的是我有一组像#one0#two0#one1#one1 之类的 div,它们都没有更改要显示的文本。我知道的另一件事是:echo $arr[0][0]$arr[0][1] 返回一个值
  • @Daniel:这种情况有很多未知数,而且您显然处于初学者阶段,很难分辨出哪里出了问题。代码应该可以工作,但是您可能在正确设置 jQuery 时遇到一些问题。编写代码以逐字更改内容怎么样(忘记$arr)?那样有用吗? $arr 呢?元素够不够?
  • 问题是sprintf这个词,一定是printf。有了这个改变,现在也有效。谢谢
  • @Daniel:Doh。本来打算写echo sprintf,后来才发现printf是一样的,只做了一半的编辑。很抱歉。
【解决方案3】:

好的,我试着给你一个简短的问题..虽然它可能很长。 PHP 它是一种服务器端脚本语言,而 javascript 它是一种客户端脚本语言。

这意味着php代码在服务器(例如Apache)中解释和执行,而javascript代码在浏览器本身内部执行。

因此,您无法在浏览器中执行 php 代码。 对于您编写的代码,您可以在 php 中简单地转换两个 for javascript 迭代。如果您确实需要在给定 javascript 变量的情况下在 php 中打印某些内容,您应该向 php 页面发出 AJAX 请求,该页面接收您的 javascript 值并返回您需要的 php 计算值。

请先看看这些参考资料:

【讨论】:

  • 这是这里唯一正确的答案,我不明白为什么其他答案有这么多赞成票!?
【解决方案4】:

&lt;?php 由 php 解释器解释。如果您在实际的 php 文件中没有这个块,那么这意味着您正在浏览器的上下文中执行。浏览器不知道 php,只知道你的 web 服务器。因此,浏览器会将&lt;?php 解释为不存在的HTML 元素。

您需要将整个块移动到一个 php 文件中,如下所示:

myFile.php
==========
    <?php
        $arr = array(...);
        $arrLen = count($arr);
        $output = '<script type="text/javascript">';
        for ($i=0; $i<$arrLen; $i++) {  // notice this is in php, not js
            $output .= '$("#one"'.$i.').html("'.$arr[$i][0].'");';
            $output .= '$("#two"'.$i.').html("'.$arr[$i][1].'");';
        }
        $output .= '</script>';
        echo $output;
    ?>

【讨论】:

    猜你喜欢
    • 2018-01-30
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2014-02-09
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多