微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – 在URL哈希/片段中存储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];
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐