ローカルホストからJSONPを読み込もうとしています。提供されている場合、コールバック付きのJSONを返すPHPWebアプリがあります。返されるJSONは100%有効です(JSONバリデーターでチェックされます)。URLは次のようになります。
http://localhost/backstage/public/data/acties?callback=?
jQuery AJAXを使用してこのデータを読み込もうとすると、「エラー」というアラートが表示され、読み込みに失敗したことを示します。
var url = "http://localhost/backstage/public/data/acties";
$("#debug").click(function() {
console.log("getting data from " + url);
$.ajax({
type:'GET',
url: url,
dataType:'jsonp',
success: function(data){
alert('loaded');
},
error: function(data){
alert('error');
}
});
});
ただし、 [ネットワーク]タブに移動すると、次のリクエストが行われていることがわかります。
http://localhost/backstage/public/data/acties?callback=jQuery19008035339566413313_1358941083680&_=1358941083681
そして、このファイルのコンテンツは有効なJSONです(ここでも、JSONバリデーターを使用して検証しました)。データがJavaScriptのデータ変数に含まれていないようです。
参考までに、これは私のPHP(Zend 1.12)コードです。
public function actiesAction()
{
$data = new Application_Model_DbTable_Actie();
$data = $data->fetchAll();
$callback = htmlspecialchars($_GET["callback"]);
$data = Zend_Json::encode($data);
echo $callback.'('.$data.');';
}
これは、にアクセスしたときに取得するJSONPです。
http://localhost/backstage/public/data/acties?callback=?
-> http://pastebin.com/tazcUQAW
誰かがこれを修正する方法を知っていますか?