ajax – 在URL哈希/片段中存储JSON的最佳实践
发布时间:2020-12-16 02:54:31 所属栏目:百科 来源:网络整理
导读:我正在构建一个单页面的 AJAX应用程序,并希望在某些情况下在URL哈希(#)之后将状态存储在 JSON中.我已经看到其他几个网站都这样做了,但我希望在我努力实现这一点时能得到一些最佳实践,技巧或陷阱. 解决方法 我实际上建议不要将数据封装到json中,然后将其放入
我正在构建一个单页面的
AJAX应用程序,并希望在某些情况下在URL哈希(#)之后将状态存储在
JSON中.我已经看到其他几个网站都这样做了,但我希望在我努力实现这一点时能得到一些最佳实践,技巧或陷阱.
解决方法
我实际上建议不要将数据封装到json中,然后将其放入散列中.
原因是JSON本身需要大量标记,并且实际上会打开一些安全漏洞,因为您必须稍后直接从??用户那里获得代码. 作为一个更好的选择,我建议使用x-www-form-urlencoded作为封装.例如,如果这是您的状态对象: var stateObject = { userName: 'John Doe',age: 31 } 然后你会创建一个这样的哈希片段: // Create an array to build the output string. var hashPartBuffer = []; for (var k in stateObject) { hashPartBuffer.push( encodeURIComponent(k),'=',encodeURIComponent(stateObject[k]),'&'); } if (hashPartBuffer.length) { // Remove the last element from the string buffer // which is '&'. hashPartBuffer.pop(); } var hashPartString = hashPartBuffer.join(''); // This will now be 'userName=John%20Doe&age=31' 然后你将通过以下方式解析它: var hashPartString = 'userName=John%20Doe&age=31'; var pairs = hashPartString.split(/&/); var stateObject = {}; for (var i = 0; i < pairs.length; i++) { var keyValue = pairs.split(/=/); // Validate that this has the right structure. if (keyValue.length == 2) { stateObject[keyValue[0]] = keyValue[1]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |