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); ?>);' />

Javascript のオブジェクトまたは配列をエンコードする に注目してください(JSONはJavaScript Object Notationjson_encodeの略です) 。'""

ただし、このソリューションの方が優れています。

<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

json_encode() php 関数によって js で配列を渡すことができます。 json_encode() は配列を文字列にします。その文字列をjsで抽出することにより、配列を取得できます。

于 2011-06-28T11:38:41.127 に答える
1

PHP 変数はサーバー上にのみ存在します。これらは、クライアント上の JavaScript 変数とは完全に分離されています。サーバーからクライアントに値を渡す唯一のメカニズムは、Web ページのコンテンツ (またはAJAXを介して特別に要求された舞台裏の Web コンテンツ) を使用することです。

これは、JavaScript が PHP 値を受け取るようにするには、これらの値を内部に埋め込んで JavaScript を作成する必要があることを意味します。サーバーからのデータをクライアント上で実行するために、PHP と JavaScript を少しずつ混合する必要があります。

これは、すべての Web サーバー側スクリプトがすべての言語でどのように機能するかです。

JavaScript で値をいっぱいに詰め込まない限り、JavaScriptは、movies 変数に何が入っているかを単純に知ることができません。

@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 に答える
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 に答える