1

PHP を使用して、フォームの値を JSON として Cookie に次のように保存しています。

// set cookie with search values so we can use jQuery to repopulate the form
setcookie('jobSearchValues', json_encode($form_state['values']), 0, '/');

これはうまく機能し、JavaScript側ではこれを使用して値を取得できます。

var jobSearchValues = JSON.parse($.cookie("jobSearchValues"));
$("#keywords").val(jobSearchValues.keywords);

これもうまく機能しますが、問題は、フォーム内のフィールドのいずれかの値にスペースが含まれていると、そのスペースが「+」に置き換えられることです。したがって、フォームが再入力されると、テキスト フィールドは「hi+mom」のように表示されます。これについてもっと良い方法はありますか?ちなみに$form_state['values']PHParrayです。JSON として Cookie に設定しているフォームには 4 つのフィールドがあります。

4

2 に答える 2

1

setrawcookie( '<name>', rawurlencode( json_encode( $value ) ), ... )クライアント側で手動で url-decode & json-parse を使用します (with JSON.parse(decodeURIComponent(cookie)))

于 2012-10-11T19:23:21.603 に答える
0

これは奇妙です。スペースを..json_encodeに置き換えることは想定されていません+

setcookieおそらくそれをurlencodingしています。

urldecode使用する前に、javascript でそれを行う必要があります。

これを試して:

(phpjsから取得)

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}

その後

var jobSearchValues = JSON.parse($.cookie("jobSearchValues"));
$("#keywords").val(urldecode(jobSearchValues.keywords));
于 2012-10-11T19:11:22.023 に答える