1

このように親子関係で機能する 2 つの HTML ページがあります。

最初のボタンには、次の 2 つのことを行うボタンがあります。まず、AJAX 呼び出しを介してデータベースからデータを要求します。次に、要求されたデータを含む次のページにユーザーを誘導します。このデータは、JavaScript によって処理され、2 番目のページに入力されます。

既に ajax 呼び出しを介してデータを取得し、それを JSON 配列に入れることができます。

$.ajax({
    type: "POST",
    url: get_data_from_database_url,
    async:false,
    data: params,
    success: function(json)
    {
        json_send_my_data(json);
    }
});

function json_send_my_data(json)
{
    //pass the json object to the other page and load it
}

2 ページ目では、「ドキュメント対応」の JavaScript 関数が、渡された JSON オブジェクトとすべてのデータのキャプチャを簡単に処理できると想定しています。それが機能することをテストする最良の方法はalert("My data: " + json.my_data.first_name);、ドキュメントの準備完了関数内で使用して、JSON オブジェクトが適切に渡されたかどうかを確認することです。

これを行うための信頼できる真の方法がわかりません。私はフォーラムを読み、window.location.url2 番目のページをロードするために使用する基本を知っていますが、データを渡すことはまったく別の話です。

4

5 に答える 5

2

セッション Cookie が問題を解決する場合があります。

2 ページ目では、Server-Script タグまたはサイトの document.cookie を使用して Cookie 内に直接印刷できます。

次のセクションでは、Json で Cookie を再度変換します。

どうですか?

于 2012-07-16T16:54:46.580 に答える
1

免責事項:これはひどいですが、次のとおりです。

まず、この関数が必要です (私はこれを少し前にコーディングしました)。詳細はこちら: http://refactor.blog.com/2012/07/13/porting-javas-getparametermap-functionality-to-pure-javascript/

リクエスト パラメータを json 表現に変換します。

function getParameterMap () {
    if (window.location.href.indexOf('?') === (-1)) {
        return {};
    }
    var qparts = window.location.href.split('?')[1].split('&'),
        qmap   = {};
    qparts.map(function (part) {
        var kvPair = part.split('='),
            key    = decodeURIComponent(kvPair[0]),
            value  = kvPair[1];

        //handle params that lack a value: e.g. &delayed=
        qmap[key] = (!value) ? '' : decodeURIComponent(value);
    });
    return qmap;
}

次に、成功ハンドラー関数内で次のようにします。

success: function(json) {
    //please really convert the server response to a json
    //I don't see you instructing jQuery to do that yet!
    //handleAs: 'json'

    var qstring = '?';
    for(key in json) {
        qstring += '&' + key + '=' + json[key];
        qstring = qstring.substr(1); //removing the first redundant &
    }
    var urlTarget = 'abc.html';
    var urlTargetWithParams = urlTarget + qstring;

    //will go to abc.html?key1=value1&key2=value2&key2=value2...
    window.location.href = urlTargetWithParams;
}

次のページで、getParameterMap を呼び出します。

var jsonRebuilt = getParameterMap();
//use jsonRebuilt 

これが役に立てば幸いです (物事を明確にするために、いくつかの追加ステートメントがあります)。(そして、人々が指摘しているように、これはおそらく間違った方法であることを忘れないでください).

于 2012-07-16T17:12:40.463 に答える
1

これは、2 つの HTML ページ間の通信に関する私の投稿です。これは純粋な JavaScript であり、Cookie を使用します: ブラウザのタブ/ウィンドウ間の Javascript 通信

そこにあるコードを再利用して、あるページから別のページにメッセージを送信できます。

コードはポーリングを使用してデータを取得します。必要に応じてポーリング時間を設定できます。

于 2012-07-16T17:41:40.920 に答える
1

あなたには2つの選択肢があると思います。

1) Cookie を使用する - ただし、サイズに制限があります。

2) HTML5 Web ストレージを使用します。

次に安全で信頼性が高く、実行可能な方法は、サーバー側のコードを使用することです。

于 2012-07-16T17:00:04.140 に答える
1

警告: これは、各疑似ページに独自の HTML ドキュメントがある単一ページ テンプレートでのみ機能します。

$.mobile.changePage()jQuery Mobile でリンクを呼び出す代わりに、この関数を手動で使用して、ページ間でデータを渡すことができます。

$(document).delegate('.ui-page', 'pageinit', function () {
    $(this).find('a').bind('click', function () {
        $.mobile.changePage(this.href, {
            reloadPage : true,
            type       : 'post',
            data       : { myKey : 'myVal' }
        });
        return false;
    });
});

これに関するドキュメントは次のとおりです。http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

次のページの変数にデータを保存することもできます。これは、jQuery Mobile ページが AJAX を介して DOM に取り込まれるため、同じ DOM に存在するため可能です。少し前にこれについて投稿した回答を次に示します。jQuery Moblie: パラメーターを渡し、ページのコンテンツを動的にロードする

于 2012-07-16T17:42:29.207 に答える