【PHP】JSONのエスケープにハマった日。javascriptへのjsonデータの渡し方。

突然なんですが、PHP→JavaScriptにJSONでデータを渡す機会って、結構多いと思うのです。

一般的には、jqueryとかでgetJsonメソッド(だっけ?)使えばいいのかもしれませんが、今回のハマった案件はソコでは非ajaxなつくり。
サーバ側でJSON生成→クライアント用HTML生成時にセットで生成というアナログな手法をとってたわけなんですが……。

 

json_encode→JSON.parseでSyntaxError?

そもそも、

これが動かないの。

Uncaught SyntaxError: Unexpected token a in JSON at position…

ってChromeが激怒してますorz
動かないのは、「”」のせいっぽいんだけど、完全にWHYでした。
そんなん知らんがな~PHPの教科書通りにjson_encode噛ましてますよ~~。

 

原因は、

の”\u”の部分ですな。
unicodeでの文字コードを意味するエスケープなわけなんですが、javascriptはどうやら

こうしてやらないと解釈できないらしい。

 

……ワッツ!?Σ(゚Д゚; )

 

非エレガントな解決方法w

つまりこうしたら解決。

 

json_encodeした後で、

ですか旦那……。

まあ理屈は何となくわかるけど、壮烈にカッコ悪いですな。。。
よいやり方モトム……( ゚Д゚ A;;

The following two tabs change content below.
大木 真之介
2016年1月、株式会社マンタ入社。プログラマー/SEが本職で、主にスクールiネットやその付随機能の開発を担当。記事を書くのが好きなため、2016年11月よりスクールiネットブログのメインライターに就任しました。読んで楽しい記事をたくさん書いていきたい!!