【发布时间】:2019-03-22 12:15:10
【问题描述】:
这是一个与 AJAX 相关的非常常见的问题,但我似乎找不到适合我的情况的问题,因为他们中的大多数使用 jQuery,以及其他原因。可能我的效率不高/不推荐,但不管怎样,我们开始吧。
我有一个按钮 [假设我们有一个引用它,因为它被称为 btn]。
它监听点击事件。当用户单击该按钮时,它会向主 HTML/CSS/JS 文件所在目录中的 .txt 文件发出 AJAX 请求。我们就叫它test.txt吧。
现在,它改变了<html> 的innerHTML(不是head/body,是html),innerHTML 是来自AJAX 请求的响应。
test.txt 保存 HTML 代码。在那个 HTML 代码中有<script src="another-js-file.js">。
这没有被执行,这就是问题所在。
在你对我尖叫之前INNERHTML 不会执行任何脚本我知道。我已经看到其他答案说要在另一个 div 中的 div 中创建 <script> 标签,但它似乎不适用于外部 js 文件,并且解决方案确实使用了 innerHTML。
好的,这是一个草图:
btn.onclick = function(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState = XMLHttpRequest.DONE){
document.documentElement.innerHTML = this.responseText;
}
}
xhr.open("GET", "./test.txt");
xhr.send();
}
test.txt 所在的位置:
<head>
<title>Document</title>
<link rel="stylesheet" href="test.css">
<script src="another-js-file.js"></script>
</head>
<body>
<h1>Hello World!</h1>
</body>
没有 jQuery。
【问题讨论】:
-
没有 jQuery。 ????
-
是的,只为 AJAX 使用 40KB 库是多余的。我完全赞成香草。
标签: javascript html ajax xmlhttprequest