MD5字符串无法正确显示html()

时间:2014-08-29 01:08:32

标签: javascript jquery cryptojs

我有两个ID为saltpassword

的范围
<div>
    $salt = '<span id="salt"></span>';<br />
    $password = '<span id="password"></span>';
</div>

然后我使用以下jQuery代码获取salt,将其添加到用户输入的密码中,并返回salt和哈希密码(以复制到配置文件中)

salt = (Math.random() +1).toString(36).substr(2, 16);
$('#salt').html(salt);
hashed = CryptoJS.MD5(salt + $(this).val());
$('#password').html(hashed);

此代码使用salt ID将salt添加到范围,但它不会向password ID添加任何内容。

如果我输入代码alert(hashed),它将打开一个md5值的警报。

如果我将.html()更改为.text()则可行。

1 个答案:

答案 0 :(得分:1)

CryptoJS.MD5()方法返回一个对象。要将此对象转换为字符串,请使用toString()方法。

hashed = CryptoJS.MD5(value);
var hashedString = hashed.toString();

使用jQuerys text()方法将文本插入元素。 jQuery html()方法用于设置元素innerHTML值。但你想插入未转义的文字。

$('#password').text(hashedString);

如果对象传递给text(),它会自动调用toString(),但参考文献中没有记录

参考

.text(text)

  

要设置为每个匹配元素内容的文本。提供Number或Boolean时,它将转换为String表示形式。 [...]请注意,此方法会根据需要转义提供的字符串,以便在HTML中正确呈现。

来自jQuery API Documentation: text()

.html(htmlString)

  

要设置为每个匹配元素的内容的HTML字符串

来自jQuery API Documentation: html()