JSONPは本来JSON形式のデータ構造では、クロスドメイン制限により読み込むことができないため、JSON形式のデータを関数の形にして読み込むことによって、外部サーバーのJavaScript関数を実行する形になり、クロスドメイン制限を回避することができる、JavaScriptの脆弱性を利用したデータフォーマットです。
PHPなどのサーバーサイド技術を使ってAPIを利用できない環境では非常に便利ですが、セキュリティ的に問題があるため、顧客情報などの個人情報を持ったAPIを想定している場合は、JSONP形式のデータフォーマットを使うのは避けたほうがよいでしょう。
callback({"empinfo": { "employees":[ { "name":"山田", "salary":"20万", "age":24 }, { "name":"鈴木", "salary":"27万", "age":35 }, { "name":"佐藤", "salary":"35万", "age":46 } ] } })
右図のようにコールバック関数が定義されあるものととして、引数となるJSON形式のデータをそのまま返す、コールバック関数を、外部サーバーから実行するかのように、JSONP形式のAPIをJavaScriptから使うことができます。
XMLやJSON形式でしか提供されていないWEBサービスであっても、PHPなどのサーバーサイドで変換する仕組みを1つ作っておけば、JSONP形式のAPIとして利用することができます。