5

search.jspというページがあります。ユーザーがレコードを選択して編集ボタンを押すと、レコードデータ(jsonオブジェクトに保存されて新しいページに渡される)を含む新しいページ(同じウィンドウ内)を開きたいと思います。Javascript(またはjQuery)を使用して新しいページを開き、JSONデータを渡すにはどうすればよいですか?

4

7 に答える 7

3

2 つのページが同じドメインにある場合、3 番目の方法は HTML5 localStorage を使用することです: http://diveintohtml5.info/storage.html

実際、 localStorage はまさにあなたが望むものを意図しています。GET パラメーターまたはウィンドウ/ドキュメント JS 参照の処理は移植性が高くありません (すべてのブラウザーが localStorage をサポートしていない場合でも)。

于 2012-12-06T00:27:50.350 に答える
2

json値を保持する非表示/テキスト入力値を使用して「オンザフライ」フォームを作成し、JavaScriptを介してこのフォームを送信できます。

このようなもの...

JQUERY AND UNDERSCOREを使用しています(テンプレートの目的で)

これがテンプレートです

<form method='<%= method %>' action="<%= action %>" name="<%= name %>" id="<%= id %>" target="_blank">
    <input type='hidden' name='json' id='<%= valueId %>' />
</form>

その後、JavaScriptで使用を投稿できます

function makePost(){
    var _t = _.template("use the template here");              
    var o = {
            method : "POST",
            action :"someurl.php",
            name : "_virtual_form",
            id : "_virtual_form_id",
            valueId : "_virtual_value"
        }

    var form = _t(o); //cast the object on the template
            //you can append the form into a element or do it in memory                   
    $(".warp").append(form);        

            //stringify you json        
        $("#_virtual_value").val(JSON.stringify(json)); 
        $("#_virtual_form_id").submit();
        $("#_virtual_form_id").remove();                        
}

これで、jsonの長さや送信する変数の数について心配する必要はありません。

一番!

于 2012-12-06T01:24:46.573 に答える
2

うーん、たとえば、オブジェクトがあります

var dataObject = {
    param  : 'param',
    param2 : 'param2'
};

JSON.stringify メソッドを使用して、文字列に変換できます

var dataObjectString = JSON.stringify(dataObject);

次に、Base64 エンコーディングを使用してデータをエンコードする必要があります (base64 エンコード/デコード メソッドは、検索エンジンで簡単に見つけることができます)。

var dataObjectBase64 = base64encode(dataObjectString);

あなたはこのようなものを得るでしょう

e3BhcmFtIDogJ3BhcmFtJyxwYXJhbTIgOiAncGFyYW0yJ307

次に、この文字列をパラメーターとして渡すことができます。

iframe src="http://page.com/?data=e3BhcmFtIDogJ3BhcmFtJyxwYXJhbTIgOiAncGFyYW0yJ307"

最後に、ロードされたページのアクションを逆にします。

于 2012-12-06T00:32:51.340 に答える
2

2 つのページが同じドメインにあると仮定すると、window.open() によって作成された返されたオブジェクトを使用して、新しく開いたウィンドウのウィンドウ オブジェクトにアクセス (および編集) できます。

于 2012-12-06T00:25:54.710 に答える
1

JSON が十分に小さい場合は、新しいウィンドウを開くときに URL への GET パラメータとして含めることができます。

何かのようなもの:

window.open(yourUrl + '?json=' + serializedJson)
于 2012-12-06T00:26:06.360 に答える