0

Python辞書をCookieに保存してから、Cookieの値をjqueryまたはjavascriptのdictに変換できるようにしようとしています。私はpython 3.3.1を使用しています。フォーマット(クエリ文字列、jsonなど)について混乱しています。

このjquery Cookieライブラリを使用しています

https://github.com/carhartl/jquery-cookie

私は次のことを試しました:

サーバ側:

import urlib.parse
d= {'key1':'value1','key2':'value2'}
cookie_data = urllib.parse.urlencode(d)

クライアント側:

cookie_data = $.cookie('Cookie_Name');
var dict = $.parseJson(cookie_data);

クライアント側で有効な辞書が得られるようにする正しい方法は何ですか?

私も使用してみました:

サーバ側:

d = {'key1':'value1','key2':'value2'}
cookie_data = json.dumps(d)

これにより、必要なjsonデータが文字列で取得されます。

cookie_data は '{"key1":"value1","key2":"value2"}' になりました

ただし、Cookieとして送信すると、文字列は次のようになります

"\173\"key2\": \"value2\"\054 \"key1\": \"value1\"\175"

そのため、何らかの方法でエンコードする必要があると考えました。

私も試しました:

var cookie_str = $.cookie('My_cookie');
var decoded_cookie = decodeURIComponent(cookie_str);

cookie_str と decoded_cookie の両方が同じです

\173"key2": "value2"\054 "key1": "value1"\175

4

2 に答える 2

2

私はこのサーバー側を行うことでそれを理解しました:

import urlib.parse, json
cookie_data = urllib.parse.quote(json.dumps(mydict))

jqueryを使ったクライアント側

var dict = $.parseJSON($.cookie('MyCookie'));
于 2013-10-25T22:09:11.167 に答える
1

JS でコンソール ロギングを使用すると、送受信される情報をデバッグするのに非常に役立ちます。

console.log(cookie_data)

実際に保存されているものを出力します$.cookie('Cookie_Name');

ここでの問題は、url エンコードされた値を server: に保存しているkey1=value1&key2=value2のに、json: が必要なことです{"key1": "value1", "key2": "value2"}。クライアントが期待しているため、サーバー上でデータを JSON 形式にエンコードする必要があります。

repr近づきますが、単一引用符を使用しており、JSON 標準では文字列に二重引用符を指定しています。クライアントはこれを受け入れるかもしれませんが、標準に準拠し、他のデータをエスケープするには、次のような Python ライブラリを使用して JSON をエンコードする必要がありますsimplejson

>>> simplejson.JSONEncoder().encode({'k':'v', 'k2': 'v2'})
'{"k2": "v2", "k": "v"}'
>>> repr({'k':'v', 'k2': 'v2'})
"{'k2': 'v2', 'k': 'v'}"
于 2013-10-25T18:08:59.547 に答える