jsonp

Ajax関連メモ。 jsonpを使った場合。

var w_jsonfile = 'http://xxxxxx.jp/hoge.php';

$.ajax({
    type:"POST",
    url:jsonfile,
    dataType: "jsonp",
    jsonpCallback: 'callback',
    success:function(data){
        console.log(data);
    },
    error :function(XMLHttpRequest,textStatus){
        console.log(textStatus);
    }
});

ポイントは、jsonpの場合は、jsonpCallbackパラメータが必要。 jQuery 1.5以降はこれで戻り値を指定する様になったようだ。 詳しくは、http://api.jquery.com/jQuery.ajax/ で、hoge.phpではxmlからjsonへ変換して、上に倣ってcallback()の形で返す。

$xml = "fuga.xml";
$result = simplexml_load_file($xml);
$encode = json_encode($result);
header("Content-Type: text/javascript; charset=utf-8"); 
echo sprintf("callback(%s)",$encode);

これでOK。