開発メモ,主に補足by子連れ親父プログラマー

2011-08-05

外部のサイトに置いた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']
をくっつける。

このブログを検索

Powered by Blogger.

ラベル

php (17) jQuery (13) OSX (10) MySQL (8) Javascript (7) Postgres (7) port (7) apache (6) Java (3) Smarty (2) html (2) pear (2) FCKEditor (1) XAMPP (1) css (1) git (1) perl (1) ruby (1)

Facebookバナー