Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一旦div中的内容发生更改,就在页面中重新加载javascript_Javascript_Jquery_Html_Ajax - Fatal编程技术网

一旦div中的内容发生更改,就在页面中重新加载javascript

一旦div中的内容发生更改,就在页面中重新加载javascript,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,这就是我的应用程序的工作原理 我有一个导航栏,一旦我点击了其中的一个链接,页面的一个特定部分(div)就会改变它的内容(ajax)。大部分内容是图形和表格,并使用css和javascript。问题是,每当我点击链接时,都不会显示/使用js的效果。我认为每次更改div的内容时都应该重新加载js。我该怎么做 这是剧本 <script> function loadTable(logtype) { var xmlhttp; if (window

这就是我的应用程序的工作原理

我有一个导航栏,一旦我点击了其中的一个链接,页面的一个特定部分(div)就会改变它的内容(ajax)。大部分内容是图形和表格,并使用css和javascript。问题是,每当我点击链接时,都不会显示/使用js的效果。我认为每次更改div的内容时都应该重新加载js。我该怎么做

这是剧本

<script>
    function loadTable(logtype)
    {
        var xmlhttp;
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            {
                document.getElementById("tables").innerHTML=xmlhttp.responseText;
                }
        }

        if (logtype == "XXX")
        {
            xmlhttp.open("GET","/con/chartUI",true);
        }

        xmlhttp.send();



    }
</script>  

函数加载表(日志类型)
{
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
{
document.getElementById(“tables”).innerHTML=xmlhttp.responseText;
}
}
如果(日志类型=“XXX”)
{
open(“GET”,“/con/chartUI”,true);
}
xmlhttp.send();
}
html/导航部分 (tables是应该显示na图表和图形的div的id)



          如果您只想在检索内容后调用某些javascript函数,请使用

            xmlhttp.onreadystatechange = function() {
              if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                  // play with xmlhttp.responseText; 
                  then call your javascript functions here
              }}
          

          因为您的div将由Ajax调用更新。我认为您可以在完成对div内容的操作之后,在ajax调用的回调中重新加载javascript

          //reload script
          var script = document.querySelectorAll('script[src=blabla.js]')[0]
          script.parentNode.removeChild(script);
          
          script = document.createElement('script');
          script.type='text/javascript';
          script.src='blabla.js';
          
          document.head.appendChild(script);
          

          您是否尝试过使用console.log()进行调试?请求是否真的被发送了(Chrome的网络标签有助于监控)

          我对你的代码结构有点困惑。responseText只针对IE5和IE6进行处理,您可以在发送请求之前尝试这样做。这是MDN的。reqListener回调是操作发生的地方

          function reqListener () {
            console.log(this.responseText);
          }
          
          var oReq = new XMLHttpRequest();
          oReq.onload = reqListener;
          oReq.open("get", "yourFile.txt", true);
          oReq.send();
          

          除非IE5支持是必不可少的,否则我建议尝试一下,它支持IE6+。

          您可以使用
          window.location.reload()更新DIV内容后

          编辑:

          如果使用Javascript/JQuery(AJAX)更新DIV内容,则无需重新加载页面。我希望您的最终要求可能是更新DIV内容

          例:


          $(“#您的_DIV_ID”).html(“此处的内容…”)

          此脚本是否刷新整个文档?我是否正确?此代码所做的是,使用脚本删除所有标记,然后创建与您删除的脚本相同的另一个脚本,然后将其附加到文档中,对吗?因为我要处理20多个js标签,我不确定这是否有效。无论如何,谢谢:)它不会删除所有脚本文件,只删除src为'blabla.js'的脚本文件如果你想重新加载名为my.js的js,只需将blabla.js替换为my.js,代码只会重新加载特定的一个脚本文件,不会更改任何其他javascript文件可以用这种方式在本机javascript中使用ajax调用,在发送请求之前,不会处理responseText。这不是程序流,它检查响应的状态,然后使用responseText。你指的是原始代码吗?您可以在这里看到它没有响应:
          responseText
          应该在回调中处理,这可以通过将responseText代码移出IE5/6块并将其放入
          onload
          处理程序来完成,就像上面的MDN示例中所示:(应该显示404错误)。我刚刚意识到您基本上发布了同样的内容。我认为这个问题应该很容易用你的答案解决,所以我对它进行了升级。我指的是我发布的答案,可能会在短时间内相互添加,这就是为什么混淆:)谢谢升级。@Jimeux是的,我试着在mozilla中调试inspect元素。当我刷新页面时,它调用(获取)所有javascript。当我单击某个内容来更改其中一个div的内容时,它只从服务器调用(获取)它所需的内容,这就是为什么在客户机中无法看到它应该看到的图形的原因。你认为你上面发布的代码可以做到这一点吗?谢谢:)是的,目标是更新div内容。但是div的内容包含表标记,该表需要来自导入的js文件的js函数。由于某种原因,服务器上的内容无法访问这些js文件,我想知道为什么?我该如何修复它呢?你可以用html元素添加/附加你的内容。这可以运行我需要的一些js文件,但有些仍然不起作用。你还有什么其他的建议吗?阿库马蒂斯能够运行我需要的一些文件,但有些仍然无法运行。我想这是因为$document.ready();根据我所读的内容,document.ready所做的是在DOM完成加载后执行该语句。我能做些什么来解决这个问题?谢谢你帮了大忙。这是$(“#你的"DIV"ID“).html(“你的内容在这里…”);解决了我的一部分问题。:)
          function reqListener () {
            console.log(this.responseText);
          }
          
          var oReq = new XMLHttpRequest();
          oReq.onload = reqListener;
          oReq.open("get", "yourFile.txt", true);
          oReq.send();