4

Web上の外部xmlファイルから統計をロードするアプリケーションを構築しました。

Webブラウザでは正常に動作します。PhoneGapforAndroidと一緒にパッケージ化しても問題なく動作します。BlackBerryPlaybookでも動作します。

ただし、BlackBerry用にパッケージ化すると機能しません。WebWorksコマンドラインツールとPhoneGapの両方を試しました。


WebWorksでパッケージ化して、シミュレーターで実行する場合

WebInspectorのコンソールでエラーが発生します

リソースのロードに失敗しました:サーバーはステータス500で応答しました(リソースの要求中にエラーが発生しました)。

Phonegapでパッケージ化し、シミュレーターで実行する場合

WebWorksの代わりにPhoneGapを使用してパッケージ化すると、アラートに次のエラーがポップアップ表示されます...

gap : ["Network Status", "getConnectionInfo","Network Status0",true]

gap: ["Device","getDeviceInfo","Device1",true]

gap_init:

gap_callbackServer:

gap_poll:

アプリのライブバージョン(未コンパイル)

WebWorksまたはPhonegapで実行するZIPファイル


同様の未回答の質問


BlackBerrySimulatorの問題のYoutubeビデオ


私が試したこと

設定ファイルに追加しました。

<access subdomains="false" uri="*"/>

phonegapによって提案された$.support.cors関数を追加しました。

$( document ).bind( "mobileinit", function() {
    // Make your jQuery Mobile framework configuration changes here!
    $.mobile.allowCrossDomainPages = true;
});
4

3 に答える 3

8

シミュレーターと WebWorks SDK は最新ですか?

2.0.1.358 のライブ PlayBook と 2.0.0.7971 のシミュレーターでテストしましたが、問題はありませんでした。

私は 2.2.0.15 WebWorks for PlayBook SDK でパッケージ化しましたが、変更したのは config.xml の id だけでした。これはドット付きのパッケージャーでは受け入れられませんでした。


さて、問題が何であるかがわかります。

かなりわかりにくいですが、Java スマートフォンのシムは、MDS シミュレーターと呼ばれる別の古いシミュレーター ツールで動作するようにセットアップされています。ほとんどの場合、実際には必要ありませんが、企業の BES 環境でデバイスが認識するものと同様のネットワークを提供します。シミュレーターは、MDS シミュレーターが実行されていない場合でも、常に「MDS」接続と呼ばれるものがあると認識しています。

WebWorks アプリで、タグのないデフォルトの config.xml ファイルを使用すると<rim:connection>(ほとんどの場合、これで問題ありません)、TCP オプションよりも MDS が優先されます。これは問題です。シムは、実際には MDS 接続がないのに MDS 接続があると認識し、最終的にその接続試行が失敗するためです。

config.xml に次のコードを追加すると、MDS の優先順位が下がり、正常に動作するようになります。

<rim:connection timeout="60000">
    <id>BIS-B</id>
    <id>TCP_WIFI</id>
    <id>TCP_CELLULAR</id>
    <id>MDS</id>
    <id>WAP2</id>
    <id>WAP</id>
</rim:connection>

最後にもう 1 つ重要な項目があります。シミュレートされた Wi-Fi ネットワークを使用するには、シミュレーターをセットアップする必要があります。ホーム画面の上部のバナー (ワイヤレス インジケーターのそば) をクリックし、Wifi をオンにして、[オプションとステータス] の [Wi-Fi ネットワーク] をクリックします。次に、[Default WLAN Network] をクリックし、手順に従って関連付けます。

于 2012-06-07T19:09:00.097 に答える
1

これは、あなたのwebworks.js. このライブラリをどこで入手したかはわかりませんが、少し古いようです。

WebWorks は、構成ファイルで要求する JavaScript API を自動的に公開する必要があります (例: window.blackberry.*)。必要なように要求を行う必要はありませんhttp://localhost:8472/blackberry/extensions/get

あなたは ajax 呼び出しを行っているだけなので、私はそのすべてをやめて、あなたの ajax コードのデバッグに集中します。

PS: Phonegap は WebWorks の上で動作するため、さらに抽象化しても問題は解決しない可能性があります。

于 2012-06-01T16:28:25.087 に答える
0

クロスオリジンのリソース共有の問題のようです。おそらくCORSを使用する必要があります

サーバー側で有効にします: http://enable-cors.org/

JavaScript で、これを使用してリモート コンテンツをリクエストします。

// Create the XHR object.
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
    // XHR for Chrome/Safari/Firefox.
    xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
    // XDomainRequest for IE.
    xhr = new XDomainRequest();
    xhr.open(method, url);
} else {
    // CORS not supported.
    xhr = null;
}
return xhr;
}

// Make the actual CORS request.
function makeCorsRequest() {

var url = "http://www.example.com/";

var xhr = createCORSRequest('GET', url);

if (!xhr) {
    alert('CORS not supported');
    return;
}

// Response handlers.
xhr.onload = function() {
    var text = xhr.responseText;
    // Do something with returned text data
};

xhr.onerror = function() {
    alert('Woops, there was an error making the request.');
};

xhr.send();
}

から: http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/AJAX-from-external-website-not-working/mp/1736733#M24128

于 2012-06-04T12:46:55.110 に答える