通常、ajax通信は同一ドメイン内でしか行えない。自サーバーのphpスクリプトなどを実行し動的に結果を取得するのに使われる。
しかし、ドメインを飛び越えてajaxを動作させる方法があるらしい。jquery.xdomainajax.js というスクリプトを使用する。
jquery.fn/cross-domain-ajax at master · padolsey-archive/jquery.fn · GitHub
公式サイトより抜粋
$('#container').load('http://google.com'); // SERIOUSLY! $.ajax({ url: 'http://news.bbc.co.uk', type: 'GET', success: function(res) { var headline = $(res.responseText).find('a.tsh').text(); alert(headline); } }); // Works with $.get too!
マジで!?URL入れるだけじゃん!?楽勝すぎる!しかも返ってくるのはjQueryオブジェクトなんだから、DOM操作もセレクタを使ったデータ収集も楽勝じゃん!
GitHubのコードを見ると、タネはYQLというYahoo.comのAPIを使っていることらしい。
YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?', query = 'select * from html where url="{URL}" and xpath="*"';
つまり米Yahoo様の力を借りて、プロキシ的に他のサイトのデータをゲットしてしまうというわけなのか。リソースと金が余りまくってる会社の力を借りるのなら罪悪感はないね。採用決定!!
クロスドメインAjaxを使用する最大の利点は、回線や処理の負荷をクライアントに肩代わりしてもらう(悪い言い方をすれば、ユーザに押し付ける)ために、サーバーの負荷が大幅に軽減できるということ。レンタルサーバーを使っていても、転送量を気にすることなく他のサイトのhtmlを拾ってくることができる。これはとてもありがたい。