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']是一个 PHP array。我将表单中的 4 个字段设置为 cookie 中的 JSON。

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 回答