2016-09-23 77 views
1

有没有办法让AJAX成功加载内联脚本函数?Ajax load inline javascript

我似乎无法弄清楚为什么这不起作用。我正尝试使用AJAX呈现页面,并且页面呈现成功;然而,除非我在父文档中声明了JavaScript函数,否则我无法使内联脚本正常工作。我生成了一个与我正试图完成的相关的简单示例。


父文档

<!DOCTYPE html> 
    <html> 
     <head> 
     <script type='text/javascript'> 
      function loadChild(){ 
      var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("childContent").innerHTML = this.responseText; 
       } 
      }; 
      xhttp.open("GET", "./child.html", true); 
      xhttp.send(); 
      } 
     </script> 
     </head> 
     <body> 
     <input type='button' value='Load Child' onclick='loadChild();'/> 
     <div id='childContent'> 

     </div> 
     </body> 
    </html> 


子文档

<input type='button' value='Child Function' onclick='childFunction();'/> 
    <script type='text/javascript'> 
     function childFunction(){ 
     alert('Do something'); 
     } 
    </script> 


我想创建通过PHP的自适应框架,我可以用我的整个网站,并使用调用子网站AJAX加载;然而,为了使它目前正常工作,我必须在调用每个页面之前呈现父文档中的每个函数。我想知道是否有办法让AJAX成功加载内联脚本函数?

回答

1

我这样的情况下,我使用了两种技术来做到这一点,

  1. 使用jQuery使用getScript加入()函数来加载一个新的脚本,它会自动执行脚本。

对于实施例

$.getScript("child.js", function(data, textStatus, jqxhr) { 
    //add this script to the document 
}); 

这里只child.js被加载时,它然后被添加到文档的DOM(脚本DOM)和它执行child.js文件内写入的JavaScript函数。

  1. 另一种方法是将此整个代码添加到DOM。 作为DOM文本插入的JavaScript不会执行。但是你可以使用动态脚本模式来执行新的Javascript代码。

请参考堆栈溢出问题:Javascript Inserted inside DOM。你将需要在你的JavaScript里面使用eval()函数在child.html代码中执行DOM来执行

谢谢,祝你好运:)