1

私はそれを検索しましたが、次のサイトからもいくつかのアイデアを得ました。 PHP配列を配列として外部Javascript関数に渡す 私のサンプルコードは以下の通りです:

 <?php $array_sample = array("c1","c2"); $newArray = json_encode($array_sample); ?>
 <INPUT type="button" value="Php Array" onclick="Test(<?php echo $newArray ?>)" />
 <script language="javascript"> function Test(test_arr){    alert(test_arr); }</script>

上記のコードでは、私undefinedalert message. 任意のヘルプをいただければ幸いです。

4

1 に答える 1

1

を使用するjson_encode()と、二重引用符が結果に保持されます。したがって、json_encode($array_sample)以下が生成されます。

["c1","c2"]

これを HTML に入れると、次のようになります。

<INPUT type="button" value="Php Array" onclick="Test(["c1","c2"])" />

あなたが言うことができるなら、あなたのjson-outputからの二重引用符はHTMLを壊し、Test()メソッドに渡されたものを壊します。

htmlentities()これを修正するには、二重引用符を HTML 値に変換するために使用でき&quot;ます。

<INPUT type="button" value="Php Array" onclick="Test(<?php echo htmlentities($newArray) ?>)" />

EDIT ( htmlentities()vs. addslashes())などの属性でエスケープされた二重引用符が無効であるため、
使用addslashes()は実際には機能しないようです。onclick="Test(\"value\")"ただし、作品などのhtmlエンティティバージョンonclick="Test(&quot;value&quot;)"

このため、元の回答を「使用するaddslashes()」から「使用する」に変更しましたhtmlentities())。

于 2012-11-08T06:15:09.663 に答える