来自ajax的javascript无法正常执行
发布时间:2020-12-16 02:56:22 所属栏目:百科 来源:网络整理
导读:使用Ajax,我创建了一种控制台,允许我动态执行一些 PHP函数. 它看起来像这个 问题是在一堆命令之后,控制台变得难以阅读.所以我创建了一个名为“wipe();”的javascript函数,它清除了 div包含控制台. 我用chrome的开发工具(javascript控制台)测试了这个功能,它
使用Ajax,我创建了一种控制台,允许我动态执行一些
PHP函数.
它看起来像这个 问题是在一堆命令之后,控制台变得难以阅读.所以我创建了一个名为“wipe();”的javascript函数,它清除了< div>包含控制台. 我用chrome的开发工具(javascript控制台)测试了这个功能,它运行得很好. 但是当我尝试通过使PHP-AJAX返回“< script> wipe();< / script>”来调用此函数时,它不起作用.它什么都不做. 我在互联网上看到所有“< script>< / script>”彼此独立工作,但您可以调用< script>函数< / script>来自另一个< script>< / script>块. 那为什么不这样做呢? 这是PHP代码: echo '<script>wipe();</script>'; 这是第一个< script>块: var xmlhttp = new XMLHttpRequest(); var span = document.getElementById("screen"); function send(data) { window.setInterval(function() { var elem = document.getElementById('screen'); xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","./_rcons-transmetter.php?data="+data,true) xmlhttp.onloadend = function() { span.innerHTML = span.innerHTML+escapeHtml(data)+'<br>'+xmlhttp.responseText+'<br><br>'; } xmlhttp.send(); } function wipe(){ span.innerHTML = ''; } 解决方法
为避免安全问题(如
cross-site scripting攻击),HTML5指定< script>标签通过innerHTML
should not execute插入.
执行脚本的一种方法是使用eval()评估html.警告:使用eval可能很危险. var xmlhttp = new XMLHttpRequest(); var span = document.getElementById("screen"); function send(data) { window.setInterval(function() { var elem = document.getElementById('screen'); xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","./_rcons-transmetter.php?data=" + data,true) xmlhttp.onloadend = function() { span.innerHTML = span.innerHTML + escapeHtml(data) + '<br>' + xmlhttp.responseText + '<br><br>'; evalJSFromHtml(span.innerHTML); } xmlhttp.send(); } function wipe() { span.innerHTML = ''; } function evalJSFromHtml(html) { var newElement = document.createElement('div'); newElement.innerHTML = html; var scripts = newElement.getElementsByTagName("script"); for (var i = 0; i < scripts.length; ++i) { var script = scripts[i]; eval(script.innerHTML); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |