phonegap を使用して BlackBerry アプリケーションに取り組んでいます。問題は、Ripple では問題なく動作しますが、実際のデバイスではサーバーから外部 JSON を取得できないことです。
<access subdomains="true" uri="*" />
まず、 build.xml ファイルに追加しました。
これは私のhtml/javascriptコードです:
<script>
function onLoad() {
$.ajax({
type : 'GET',
url : "http://myserver.com/api/test.php",
jsonpCallback : 'jsonCallback',
crossDomain : true,
cache : false,
dataType : "jsonp",
jsonp: 'callback',
success: function(json) {
$( ".info" ).html("success");
},
error: function(xhr, textStatus, errorThrown) {
$( ".info" ).html("Error: " + textStatus + ":" + errorThrown);
}
});
}
</script>
<body onload="onLoad();">
...
</body>
これを Ripple エミュレーターで実行すると、成功のコールバックが呼び出されますが、実際のデバイス (BlackBerry 7.0) では次の出力が得られます。
パーサー エラー: json コールバックが呼び出されませんでした。
補足として、JSONLint で応答を検証しましたが、問題ありません。また、応答は有効な jsonp 応答です。
jsonCallback({"result":{"status":"ok","testText":"There goes my content"}});
さらに、アクセスをログに記録するコードをサーバーに配置しましたが、呼び出されていないため、問題はサーバーコードではなく、モバイルコードのどこかにあると思います。