我正在使用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。
答案 0 :(得分:1)
使用setrawcookie( '<name>', rawurlencode( json_encode( $value ) ), ... )
然后手动url-decode&amp; json-parse在客户端(使用JSON.parse(decodeURIComponent(cookie))
)
答案 1 :(得分:0)
这很奇怪。 json_encode
不应该用+
..
setcookie
可能是urlencoding它。
在使用之前,您必须在javascript中使用urldecode
。
试试这个:
(摘自phpjs)
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
然后
var jobSearchValues = JSON.parse($.cookie("jobSearchValues"));
$("#keywords").val(urldecode(jobSearchValues.keywords));