MD5字符串与html()一起显示不正确

MD5 string not displaying correctly with html()

本文关键字:一起 显示 不正确 字符串 html MD5      更新时间:2023-09-26

我有两个跨度,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(),它会起作用。

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

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

而不是使用jQuerys的text()方法将文本插入到元素中。jQuery html()方法用于设置元素CCD_。但您希望插入未标注的文本。

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

如果一个对象被传递给text(),它将自动调用它上的toString(),尽管这在参考中没有记录

参考

.text(text)

要设置为每个匹配元素内容的文本。当提供数字或布尔值时,它将被转换为字符串表示[…]请注意,此方法根据需要转义提供的字符串,以便在HTML中正确呈现

来自jQuery API文档:text()

.html(htmlString)

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

来自jQuery API文档:html()