2016-09-23 70 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來執行

謝謝,祝你好運:)