CakePHP2 連想配列をJavaScriptに渡す

CakePHP2ネタという訳ではないですが、PHPの配列もしくは連想配列をJavaScriptに渡すやり方です。

■力技
ネットでは、PHPの配列を「カンマ区切り文字列」にしてJavaScriptに渡し、JavaScript側でカンマにてsplitするという力技が紹介されてました。(ちょっと古い記事かもしれませんが・・・)

// PHP in Server
$str = join(",", $list);

// JavaScript in Client
var js_str = "<?= $str ?>";
var list = js_str.split(",");

■JSONで
JSONデータで渡した方が、スマートだと思います。これだと、連想配列もすんなり渡せます。例えば、こんな連想配列でも、PHP側でJSON文字列にエンコードして・・。

$date = array(
  (int) 8 => '2013-07-25',
  (int) 12 => '2013-07-26',
  (int) 13 => '2013-07-31'
)
$json_string = json_encode($date);

JSON文字列をJavaScriptで受け取って、paraseJSONでJSON配列にすると良いのではないでしょうか。

$(function() {
  var json_string = '<?= $json_string ?>';
  var datelist = $.parseJSON(json_string);
   
});

※ちなみにクォーテーション部分の「’」は、「”」だとエラーになります。JSONコードの要素がダブルクォーテーションで囲み、外側はシングルクォーテーションにするのがJSONの書式だからみたいです。

'<?= $json_string ?>'
    ↓
'{"8":"2013-07-25","12":"2013-07-26","13":"2013-07-31"}'

1件のコメント

コメントを残す

役立つ
面白い

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください