页面表单预览数据传递注意事项
有时候需要提供给用户对刚填写的表单“预览”功能,预览后还要返还源页面,并且保证页面数据不丢失。
有的是采用js功能给一个弹出框。
但有的需要真实html页面的跳转,我昨晚上弄的就是这个,现在记下来备用
不好意思,我暂时用PHP代码来讲,其它的语言中也应该有这些api函数:
1.form表单提交,获取多个input表单,组成数组。
2.显示预览页面时,先将数组用json_encode();进行编码,然后$smarty->assign('var', $var)到预览页面
3.在预览页面用html标签<textarea><{$var}></textarea>接收(我用<input type="text" ..../>,没有接收成功)
4.用form表单提交后获得该$var,由于我的页面提交后对json格式的数据中的双引号进行了转义
所以,如果你们的也这样,就用php的htmlspecialchars_decode($var)函数将双引号还原
5.经过第四步后就可以用PHP的json_decode($var,true);进行解码,获得最初源页面提交的数组了
2012年10月25日 14:42:14
今天又发现一个问题,中文字符的json编码是用转义字符+u+16进制数字(\u5f20\u5fd7\u658c)组成的,
不知道什么原因,入库(mysql)时这里的转义斜线没有了(变成了:u5f20u5fd7u658c),再读出来json_decode()时,当然就不能显示汉字了,
我找到了义个PHP函数addcslashes($var,'\\'),这样就可以在每个转义斜线的前边再加一个转义斜线(变成了: \\u5f20\\u5fd7\\u658c),入库时由于只去掉了一个反斜线,所以格式正好正确,直接json_decode();就行了,o(∩_∩)o 哈哈