我正在开发一个网站,用于跟踪用户点击的链接。数据以localStorage
中的字符串形式存储。我知道localStorage
中的字符串数据可以使用JSON.parse
转换为JS对象。问题是存储的url字符串包含对JSON无效的字符。我收到了错误:
1_0.html:1 Uncaught SyntaxError: Unexpected token h in JSON at position 0
at JSON.parse (<anonymous>)
at trackLink (tracking_functions.js:318)
at HTMLAnchorElement.onclick (1_0.html:46)
我尝试在使用this suggestion通过JSON
解析器发送字符串之前清理字符串,但这并不能解决问题。我不确定清除字符串是否是一个选项,因为它可能使url字符串无法用作超链接。
有没有办法解决这个问题?
答案 0 :(得分:1)
encodeURI()此函数对特殊字符进行编码,但:/,? :@&amp; = + $#(使用encodeURIComponent()对这些字符进行编码)。
encodeURIComponent()此函数对特殊字符进行编码。另外,它编码以下字符:,/? :@&amp; = + $#
你必须这样做
var url = "https://a.but/#safe=active&q=sf";
var json = {"link": encodeURIComponent(url)}
localStorage.setItem("urls", JSON.stringify(json));