javascript - 使用 AJAX 在我的 HTML 文档中获取 PHP 文件,但其中的脚本不起作用
问题描述
我正在使用AJAX在我的 HTML 文档中调用一个php文件,它也可以正常工作。问题是,PHP 文件中的脚本标签很少,如果单独查看 PHP 文件,它就可以正常工作。但是当我使用 AJAX 调用它时,这些脚本不起作用。
我附上了我的 PHP 代码和下面的屏幕截图。
试用版.php
<script>
document.getElementById("response1").onload = function() {
document.body.style.backgroundColor = "#ffa31a";
}
</script>
<h1 class="restitle"> Responses</h1>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "portfolio";
$conn = mysqli_connect( $servername, $username, $password, $dbname );
if ( !$conn ) {
die( "Connection failed: " . mysqli_connect_error() );
}
$sql = "SELECT NAME, EMAIL, MESSAGE, TIME FROM Feedback ORDER BY TIME";
$result=$conn->query( $sql );
if ( $result == TRUE ) {
$i=0;
?>
<script>
var n = 1;
</script>
<?php
while ($row = $result -> fetch_row()) {
$i = $i+1;
echo "<div class='response' id='response$i'><h1 class='responsetitle' id='responsetitle$i'><i class='fa fa-user' aria-hidden='true'></i> " . $row[0]. " <span class='responseemail' id='responseemail$i'> (". $row[1] .")</h1><hr class='responseline'><p class='responsetxt' id='responsetxt$i'>\"" . $row[2] . "\"</p><br /><div class='responsetimecontain'><span class='responsetime'>- " . $row[3] . "</span></div></div>";
echo "<div id='valuepipe$i' style='display:none;'>" . $i . "</div>";
?>
<script>
var i = document.getElementById("valuepipe" + n).textContent;
if (i % 2 == 0) {
document.getElementById("response" + n).style.backgroundColor = "#ffa31a";
document.getElementById("responseemail" + n).style.color = "#f2f2f2";
document.getElementById("responseemail" + n).style.opacity = "0.6";
document.getElementById("responsetitle" + n).childNodes[0].style.color = "#f2f2f2";
document.getElementById("responsetxt" + n).style.color = "#f2f2f2";
}
n++;
</script>
<?php
}
$result -> free_result();
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
mysqli_close( $conn );
?>
单独查看此文件时:
但是当我使用 AJAX 调用它时:
<script>
var xhttp = new XMLHttpRequest();
xhttp.onload = function() {
document.getElementById("main2").innerHTML = this.responseText;
}
xhttp.open("GET", "trial.php");
xhttp.send();
</script>
我得到以下观点:
不知何故,所有的脚本标签都被忽略了。需要一个解决方案。任何帮助,将不胜感激。
注意:其他样式在我的 CSS 文件中实现,因此它们是可见的。只有脚本不起作用
解决方案
来自MDN 参考
HTML5 规定不应执行插入有 innerHTML 的 <script> 标记。
您需要将脚本与 HTML 内容分开,或者将它们作为加载内容的代码的一部分包含在内,或者将它们放在单独加载的自己的脚本文件中。
推荐阅读
- python - 如何将存储桶图像从 AWS S3 读入 Sagemaker Jupyter 实例
- angular - 如何在Angular中动态构建模板?
- java - Java中的对象初始化是原子的吗?
- javascript - React:具有两个参数的映射函数
- sql - 仅当 SQL 中的组内不同时才提取所有数据
- javascript - 如何在 Vue.js 中使用 javascript 避免来自 cloneNode 的内存泄漏
- android - Reactive Publisher openSubscription 将来会过时,我应该如何解决?
- swift - App Store Connect 操作错误 Transporter 问题
- java - UDP客户端服务器平均计算程序
- html - (HTML,CSS)如何链接和重用来自单个 HTML 文件源的代码块,比如“扩展”的模板?