あ〜そうだった、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']をくっつける。
