簡単にできると思って実装してしまって、実際に外部のサーバーに設置してから、ありゃ動かないわ、
あ〜そうだった、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']
をくっつける。