我从ASP.NET Web服务接收JSON数据,该服务已经使用Microsoft的AntiXSS库(Encoder.HtmlEncode()
)进行了HtmlEncoded,然后通过jQuery Ajax调用返回为JSON。
我正在使用以下数据填充编辑表单输入:$('descriptionTextBox').val(object.Description);
其他时候,我可能只是将其作为Html附加到按预期显示数据的页面:$('descriptionSpan').html(object.Description);
显然,如果字符串最初包含Html或已编码的字符,则会导致表单输入显示编码数据。要解码数据以便在输入中显示,我使用以下内容:
function decodeHtml(encodedStr) {
return $("<div/>").html(encodedStr).text();
}
喜欢这样$('descriptionTextBox').val(decodeHtml(object.Description));
这是使用JavaScript在表单/输入上设置编码数据的正确方法吗?
答案 0 :(得分:1)
是的,我认为没关系。有关解码包含html实体的字符串的替代方法,请查看以下答案:https://stackoverflow.com/a/9609450/240324。
我个人更喜欢这种方法,因为它不会仅仅为了解码字符串而创建一个html元素,但是你的方法没有任何问题。