2

PhoneGap アプリでは、次のコードを使用して開始ページをセットアップできます。

self.viewController.wwwFolderName = @"www";
self.viewController.startPage = @"index.html";

しかし、そのページにパラメーターを渡したい場合は機能しません。

self.viewController.startPage = @"index.html?parameter=abc";

エラーの原因となりNSURLErrorRedirectToNonExistentLocationます。

パラメータをローカル ページに渡す簡単な方法はありますか?

4

3 に答える 3

6

phonegap アプリでは、パラメーターを渡してローカル ページを呼び出すことはできません。これは、システムが渡したファイルとまったく同じ名前のファイルを検索するためです。パラメータをクエリ文字列として扱いません。

Ex: when you say "index.html?param=abc", instead of calling page index.html with a
parameter called param having value abc. It calls the page "index.html?param=abc"
which doesn't exist in the system. Hence, the error.

この問題を解決する最善の方法は、パラメーターを呼び出しページでローカル ストレージとして保存し、次のページで使用して破棄することです。

Ex: In your calling JavaScript file, use:
window.localStorage.setItem('param', 'abc');

Now, in your called file, access the local storage and delete it
param abc = window.localStorage.getItem('param');

window.localStorage.removeItem('param');

それが役立つことを願っています。

于 2013-04-03T12:59:58.823 に答える
0

もし私があなたなら、あなたが作成するプラグイン メソッド (つまり plugin.GetQueryString() ) を介してすべての情報を JavaScript に渡すだけです。すべてのクエリ パラメータを文字列として返す一般的なプラグイン メソッドを作成できます。そして、次のメソッドを使用して JavaScript で処理できます。

function getQueryParams(qs) {
    var params = {},
    tokens,
    re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
        = decodeURIComponent(tokens[2]);
    }

    return params;
}

window.$_GET = getQueryParams(plugin.GetQueryString());

その結果、名前でアクセスできるすべての GET パラメータを含む優れたデータ構造が得られます。

于 2013-11-04T21:01:34.640 に答える