簡體   English   中英

AJAX無法在其他頁面中加載JavaScript

[英]AJAX can't load JavaScript in another page

為什么AJAX無法使用JavaScript加載另一個HTML頁面? 它加載HTML,CSS,PHP等...但不加載JavaScript。 AJAX應該這樣工作嗎? 如果是這樣,我如何加載另一個包含JS和AJAX的HTML頁面?

一個簡單的例子,我的意思是

a.php

<!DOCTYPE html>
<html>
<body>

<div id="demo">
<h1>The XMLHttpRequest Object</h1>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>

<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "b.php", true);
  xhttp.send();
}
</script>

</body>
</html>

b.php

<!DOCTYPE html>
<html>
<body>
<h1>b</h1>
<script>
document.write("Hello World!");
</script>

</body>
</html>

響應的屏幕截圖:
AJAX響應屏幕截圖

由於您將通過ajax獲取的javascript代碼是一個簡單的字符串,因此不會執行。 您必須eval()腳本標簽中的代碼,例如:

例:

<script id="helloworld">
document.write("Hello World!");
</script>

JS:

var jsCode = document.getElementById('helloworld').textContent;
eval(jsCode);

根據要求編輯:

if (this.readyState == 4 && this.status == 200) {
    var demoElement = document.getElementById("demo");
    demoElement.innerHTML = this.responseText;
    var scriptTags = demoElement.getElementsByTagName('script');

    for(i = 0; i < scriptTags.length; i++) {
        eval(scriptTag[i].textContent);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM