加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

来自ajax的javascript无法正常执行

发布时间:2020-12-16 02:56:22 所属栏目:百科 来源:网络整理
导读:使用Ajax,我创建了一种控制台,允许我动态执行一些 PHP函数. 它看起来像这个 问题是在一堆命令之后,控制台变得难以阅读.所以我创建了一个名为“wipe();”的javascript函数,它清除了 div包含控制台. 我用chrome的开发工具(javascript控制台)测试了这个功能,它
使用Ajax,我创建了一种控制台,允许我动态执行一些 PHP函数.

它看起来像这个

screenshot

问题是在一堆命令之后,控制台变得难以阅读.所以我创建了一个名为“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);
      }
    }

  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读