1
我使用CryptoJs来获得PDF文件的散列(sha256)。如何从异步函数获取散列值?
我已经有我的文件的散列,但我不能在函数之外获得它。
这是我的代码:
var reader = new FileReader();
var hash = "";
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var i8a = new Uint8Array(evt.target.result);
var a = []; for (var i = 0; i < i8a.length; i += 4) { a.push(i8a[i] << 24 | i8a[i + 1] << 16 | i8a[i + 2] << 8 | i8a[i + 3]); }
var wordArray = CryptoJS.lib.WordArray.create(a,i8a.length);
var hash = CryptoJS.SHA256(wordArray);
alert(hash);
}
};
var blob = file.slice(0, file.size + 1);
reader.readAsArrayBuffer(blob);
alert(hash);
第一个提醒给我啥,但第二个是空的。 如何将哈希定义到函数中以便在使用后使用它?
如果我添加一个callBack函数它工作。 但我想使一个Ajax请求,当我添加请求到一个回调函数是这样的:
function callBack(hash){
$.ajax({
type: "POST",
url:"http://...",
dataType:'json',
data:({shaPdf: hash}),
success: function(data) {
//...
},
error: function(error) {
}
});
我有这样的错误在我的控制台:
Uncaught TypeError: Cannot read property 'words' of undefined
它的工作,但我想要做一个Ajax请求,如果我添加一个Ajax请求到callBack函数,你的解决方案不起作用。你有什么想法吗? – wxcvbn
它基本上是一样的。阅读异步调用。 Ajax调用在完成后也需要回拨。 – Mouser
对不起,我不明白,我怎样才能对ajax请求进行回调? – wxcvbn