外部のサイトに置いたphpからのjsonデータをjqueryで読み込む
あ〜そうだった、Javascript って外部のサーバーのファイル読めないんだっけ、と気づいていつもあきらめていたんだが。
これを ajax の crossdomain と言うらしい。
検索すると jquery のプラグインとかで沢山ヒットするが、jquery のドキュメントを見ると1.5以降 jquery 単体でも実現できるようになっている。
ということで試してみた。
まず javascript 側は、
$.ajax({ url: "http://xxxxxxxxxxxxxx/get_json.php", data: "name=123", dataType: 'JSONP', async: false, crossDomain: true, success: function(data){ console.log(data); }こんな感じ。dataType を JSONP にするのがミソだ。データは必ず get で送られるので
type: "POST"とか書いても意味はない。
で、php 側は
echo $_GET['callback'].'({"error":"no data"})';こんな感じ。
普通の json 形式データを()で囲んで、その前に
$_GET['callback']をくっつける。