在服务器应用程序中我正在创建一个我要发送的所有HTML输出的哈希字符串:
ob_start();
?>
<!DOCTYPE HTML>
<html>
...
</html>
<?php
$html = ob_get_clean();
$hash = md5($html);
print $html;
exit;
我怎样才能发送哈希字符串,但是javascript能够以某种方式读取它?
我想在调用print之前用header()
添加它但是看起来javascript无法读取页眉,只能在ajax模式下但这不是ajax请求:/
答案 0 :(得分:0)
您可以将此行添加到您的php脚本中:
echo '<script>var hash = ' . $hash . ';</script>';
然后你的哈希将通过“hash”javascript变量提供。
如果要异步执行此操作,则必须使用AJAX。当您想要执行http请求而无需重新加载整个页面时,AJAX非常有用。我建议你使用JQuery,因为它比ajax调用的javascript更容易。通常,您在用户事件上调用ajax(例如:单击按钮)
JQuery实现的一个例子是:
$('.showHashButton').onclick(function(){
var pageHtml = $("html").html();
$.get( "url_to_your_server_script", { html: pageHtml} )
.done(function( data ) {
alert(data); //show the hash
});
});
PHP脚本实现的一个示例:
<?php
echo md5($_GET('html'));
?>
如果您有任何疑问,请在下面发表评论!
答案 1 :(得分:0)
这是使用标准JavaScript的完整工作示例。最终的DIV标记不包含在md5哈希中。阅读脚本中的注释以获取jQuery指令。希望这有帮助!
<?php
ob_start();
?>
<!DOCTYPE HTML>
<html>
<body onLoad="afterLoad();">
<p>...content...</p>
<script>
// you can also use jQuery(document).ready(function(){...});
// instead of the onLoad() in body.
function afterLoad() {
var md5=document.getElementById('md5hash').innerHTML;
alert(md5);
}
</script>
</body>
</html>
<?php
$html = ob_get_clean();
$hash = md5($html);
print $html.'<div id="md5hash" style="visibility: hidden">'.$hash.'</div>';
exit;
?>