4

index.php

<script type="text/javascript" src="javascript.js"> </script>
<?php
 $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
?>

<input type="submit" value="Test Javascript" onclick="showMovies(<?php echo $movies; ?>);" />


javascript.js

function showMovies(movies) {
 alert(movies.length);

 return false;
}

我是编程新手,所以我很难解决这个问题,这对你们来说显然很简单。

当我点击提交按钮时,它说数组大小是 1,我认为应该是 7。这怎么可能?

4

7 回答 7

10
<input type="submit" value="Test Javascript" onclick='showMovies(<?php echo json_encode($movies); ?>);' />

请注意json_encode,它为 Javascript 编码对象或数组(JSON 代表 JavaScript 对象表示法),还请注意'代替",因为 JSON 使用".

虽然,这个解决方案会更好:

<script type="text/javascript">
    document.getElementByID('submitButton').onclick = function() {
        var movies = <?php echo json_encode($movies); ?>;
        showMovies(movies);
    };
</script>
...
<input type="submit" value="Test JavaScript" id="submitButton">
于 2011-06-28T05:51:49.917 回答
4

试试这个

PHP 代码

<script type="text/javascript" src="javascript.js"> </script>
<?php
  $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
  $mov_str = implode(",", $movies);
?>

<input type="submit" value="Test Javascript" onclick="showMovies('<?php echo $mov_str; ?>');" />

在 Javascript 文件中

function showMovies(movies) {
  movies = movies.split(",");
  alert(movies.length);
 return false;
}

输出

7

我希望这能帮到您。

于 2011-06-28T07:24:03.053 回答
2

输出前编码为 JSON。

<input type="submit" value="Test Javascript" onclick="showMovies(<?php echo json_encode($movies); ?>);" />
于 2011-06-28T05:48:19.073 回答
1

您的 PHP 变量只存在于服务器上。它们与客户端上的 JavaScript 变量完全分开。将值从服务器传递到客户端的唯一机制是通过网页的内容(或通过AJAX的特别请求的幕后网页内容)。

这意味着要让您的 JavaScript 接收 PHP 值,您必须在编写 JavaScript 时将这些值嵌入其中。您必须至少将 PHP 与 JavaScript 混合一点点,以使在客户端上运行的东西能够从服务器获取任何数据。

这就是所有 Web 服务器端脚本在所有语言中的工作方式。

JavaScript 根本无法知道你的 movies 变量中发生了什么,除非你在 JavaScript 中把它塞满了值。

我建议您查看@levu 的答案,以了解将 PHP 变量的值转换为 JavaScript 的好方法。

于 2011-06-28T06:16:24.677 回答
1
<?php
  $movies = array("Bloodsport", "Kickboxer", "Cyborg", "Timecop", "Universal Soldier", "In Hell", "The Quest");
  $str=implode(",",$movies);
?>
<script type="text/javascript" >
  var arr=new Array();
  var str="<?php echo $str; ?>";
  arr=str.split(',');
  //alert(arr.toSource());
  function showMovies(movies) {
    alert(movies.length);
    return false;
  }
</script>

<input type="submit" value="Test Javascript" onclick="showMovies(arr)" >

嘿,请在上面使用以获得您想要的结果。它是经过测试的代码。

于 2011-06-28T06:40:11.407 回答
1

您可以通过 json_encode() php 函数在 js 中传递数组。json_encode() 会将数组转换为字符串。您可以通过在 js 中删除该字符串来获取数组。

于 2011-06-28T11:38:41.127 回答
0

您还可以使用 json_encode() 解析 JavaScript 数组

$array = array('1','a','b');

echo '<script type="text/javascript">';
echo 'var x = ' . json_encode($array) . ';';
echo '</script>';

这也适用于关联数组:

$array = array("x" => '1',"y" => 'a',"z" => 'b');
echo '<script type="text/javascript">';
echo 'var x = ' . json_encode($array) . ';';
echo '</script>';
于 2012-11-05T10:27:13.463 回答