JSONを使ってみた
久々の更新。
いつもころころとネタが変わって、一貫性のないブログになっていますが
今回はJSONについて、、、
というのも、今回やっている仕事で初めて??となるJavaScriptを使っているため
忘れないように備忘録と
もしかして見ていただいているかも知れないプロの方々に
駄目だしをして頂ける事をちょこっと期待して書いてみます。
なんでJSON使うの??
当初、prototype.jsのUpdaterを使って更新をしていたが
どうにもこうにも遅い、、、
更に、複数の項目を更新していると挙動がおかしい???
ので、Ajax.Request+JSONを使って直接表示を更新して見ようと言うのが
今回の経緯です。
一番最初のコード
<script type="text/javascript" src="./js/prototype.js"></script> <script> function test() { var test = document.getElementById('test'); var url = "http://localhost/php/update.php"; var pars = ''; var myAjax = new Ajax.Request( url, { method:'get', parameters: pars, onComplete: showResponse }); } function showResponse(res) { var mosu = res.responseText; var mosu1 = eval(mosu); alert(mosu1.100); } </script>
<?php echo '{100 : "日本語100", 101 : "日本語200"}'; ?>
2番目のコード
PHPのコードでJSONのkeyの部分を数字から文字列に変更
(当たり前か、、、)
<?php echo '{"mosu1" : "日本語100", "mosu2" : "日本語200"}'; ?>
3番目のコード
PHPのコードの内部エンコードをutf-8に指定
(よくあるAjax関係の文字化け解消法を実施してみた)
<?php mb_internal_encoding("utf-8"); echo '{"mosu1" : "日本語100", "mosu2" : "日本語200"}'; ?>
4番目のコード
BOMと呼ばれるコードを付加しないとSafari2は駄目らしいので
とりあえず入れてみた
(完全に聞きかじりなので仕組みがわかってません、、、
ここ見て勉強しろ!という素敵なサイトがあったら教えてください、、)
<?php mb_internal_encoding("utf-8"); echo "\xef\xbb\xbf"; echo '{"mosu1" : "日本語100", "mosu2" : "日本語200"}'; ?>
5番目のコード
JavaScriptのコードのevalをちょちょっと変更
(どうも、根本的にJSONの理解不足です、、、
でも、safariでは動くんだなぁ、、、)
var mosu1 = eval(mosu); ↓ var mosu1 = eval("("+mosu+")");