[JavaScript] jQuery.getJSON()ではまった

2013/05/21

こんにちは。きんくまです。

設定ファイルをJSONで書いて読み込むということをやろうとして、はまったのでメモです。

jQuery.getJSON()を使ってやってみたところ、どうにも読み込みハンドラが呼ばれないのです。

$.getJSON('path/to/jsonfile.json', function(jsondata){
    console.log(jsondata); //これが呼ばれない
});

んで、いろいろと試したりしたのですが、どうにもうまくいかず。

リファレンスを読んだところ、


Important: As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently. Avoid frequent hand-editing of JSON data for this reason. JSON is a data-interchange format with syntax rules that are stricter than those of JavaScript’s object literal notation. For example, all strings represented in JSON, whether they are properties or values, must be enclosed in double-quotes. For details on the JSON format, see http://json.org/.

importantという見だしで、「JSONファイルにシンタックスエラーがあったら、静かに(何も言わずに)失敗します。」って書いてあるー!
エラー出力してくれるといいなって思う、、。(泣)

んで、JSONファイルを見ていろいろと直していったら、ようやく呼ばれたという、。

じゃ、JSONファイルのポイントを書くと

JSONファイルをvalidにするポイント

・文字列はダブルクオートで囲む。プロパティ名も(”文字列”)
・Objectの{とArrayの[の入れ子をチェック
・, のチェック
・コメントを入れない

って言う感じですかね。コメント入れないのは、調べたら書いてあった

んで、gruntのタスクに構文チェックしてくれるのあるのかな?って調べたら作っている人がいました。すごいですな。

>> stephenmathieson / grunt-jslint

これで、もし呼ばれなかったらまず、jsonのlintをかけてみると良いですね。
呼ばれなくても、json書いたら一応かけた方が良いですね。

あと、gruntについて調べてたら、いくつか便利だったので紹介。

エラーが起きたときに、お知らせ(notification)
>> https://github.com/dylang/grunt-notify

SassとかTypeScriptとかをwatch -> コンパイルにして作業していると、自動でコンパイルしてくれるので、ターミナルを見ないとエラーが起きたかどうかわからないのです。なのでこいつがあると、エラーが起きたときに、画面右上にポップアップで「ナンカエラーダッテ」と出るので、気づいて良かったなとなります。

ローカルWebサーバーを簡単にたてる
>> https://github.com/gruntjs/grunt-contrib-connect

プロジェクトごとに簡単に立てられるので、楽です。厳密には、ちゃんと本番サーバーと同じ構成でチェックしないといけないのだろうけど、簡易にできるので良いかな。

自分の設定がよくわかってないのかもしれないのだけど、最初ParallelsのWinのブラウザからこれで立てたページがうまく読み込めなかったのです。
で、いろいろと試してたら、読めるようになりました。

        connect:{
            server:{
                options:{
                    port:1234
                    ,base:'path/to/documentroot'
                    ,keepalive:true
                    ,hostname:'192.168.1.3'
                }
            }
        },

hostnameのところはターミナル上でifconfigとかやると自分のIPアドレスがわかるので、そいつを書くとよいです。
これで、winからは

http://192.168.1.3:1234/

とかやると読み込めました。IPアドレス変わっちゃうと毎回hostnameを書き換えないといけないのが面倒だけど、これはapacheの設定ファイルをかいた方が面倒でないかのトレードオフですね。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る