我从JSON获得以下响应,它是字符串格式,里面有一个数组。
"["Password first character can not be blank", "Current password can't be blank"]"
我尝试使用以下方法提取我所需的数组对象。
errorMessages = "["Password first character can not be blank", "Current password can't be blank"]"
jQuery.parseJSON( errorMessages )
但这对我不起作用,有人可以帮助我吗?
提前谢谢。
答案 0 :(得分:2)
除非你能以JS转换为JSON的方式传递数据,否则你必须使用它:
我认为最好的方法是使用浏览器的内置HTML转义功能 处理许多情况的功能。要做到这一点,只需创建一个 DOM树中的元素,并将元素的innerText设置为您的 串。然后检索元素的innerHTML。浏览器会 返回一个HTML编码的字符串。
function HtmlEncode(s) { var el = document.createElement("div"); el.innerText = el.textContent = s; s = el.innerHTML; return s; }
试运行:
alert(HtmlEncode('&;\'><"'));
输出:
&;'><"
这种转义HTML的方法也被Prototype JS库使用 虽然不同于我给出的简单样本。
注意:您仍然需要转义引号(双引号和单引号) 你自己。您可以使用其他人概述的任何方法。
答案 1 :(得分:1)
您是否使用JSON.stringify
来获取json对象? JSON.stringify
可能会阻止"
如果您仍有问题,可以将"
替换为"
JSON.parse(errorMessages.replace(/"/g,'"'));
答案 2 :(得分:0)
显然,您正在使用 htmlspecialchars()
的输出。您可以使用此简单函数首先对其进行解码并将其解析为数组。因此,整个功能就像。
var errorMessages = '["Password first character can not be blank", "Current password can't be blank"]';
function decodehtml(text) {
return text
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, '"')
.replace(/'|'/g, "'");
}
var errorArray = JSON.parse(decodehtml(errorMessages));