javascript - 如何加载从 Ajax 请求调用的 php 文件中的脚本?

标签 javascript jquery ajax

我有这个 JavaScript:

<script>
    if (str == "") {
        document.getElementById("txtHint1").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint1").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "/npsmart/umts/action_plano/?q=" + query1, true);
        xmlhttp.send();

    }
</script> 

此 JavaScript 调用一个名为 getuser.php 的页面。

这是getuser.php的代码:

<!DOCTYPE html>
<html>
    <body>
        <p id="dumb"></p>
        <script>
            document.getElementById("dumb").innerHTML = "WORK";
        </script>
    </body>
</html>

我只想将名为“dumb”的段落内容更改为“WORK”。但是当我调用该页面并加载它时,我的段落内容保持为空。 就像我的 Ajax 调用请求不执行脚本标签。

编辑:

我已经用这个简单但巧妙的解决方案解决了我的问题:

function showUser() {
if(query_num == 2){ 
if (str == "") {
    document.getElementById("txtHint1").innerHTML = "";
    return;
} else { 
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("txtHint1").innerHTML = this.responseText;
            eval(document.getElementById("runscript").innerHTML);
        }
    };
    xmlhttp.open("GET","/npsmart/umts/action_plano/?q="+55555,true);
    xmlhttp.send();

}

在我的 getuser.php 文件中:

<script type="text/javascript" id="runscript">
document.getElementById("dumb").innerHTML = "WORK";
</script>

我刚刚将: eval(document.getElementById("runscript").innerHTML); 放入我的函数中,然后在 php 文件中使用以下命令调用此脚本:

<script type="text/javascript" id="runscript">

谢谢大家=)

希望这篇文章可以帮助其他人。

最佳答案

JS 不会从响应中嵌入的脚本自动执行。

由于getuser.php是一个PHP脚本,因此不需要使用JS并让浏览器设置段落内容。使用 PHP 本身:

<!DOCTYPE html>
<html>
    <body>
        <p id="dumb"><?php echo 'WORK'; /* or anything else */ ?></p>
    </body>
</html>

否则,您必须在返回的 AJAX 响应上使用 JS eval 以使浏览器运行从脚本返回的 JS。但我建议不要这样做。

关于javascript - 如何加载从 Ajax 请求调用的 php 文件中的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46791782/

相关文章:

javascript - 需要检测网页中哪个 &lt;script&gt; block 与另一个 &lt;script&gt; block 交互?

javascript - 可能清除 jquery `one` 方法

javascript - 防止 jQuery post 请求多次触发

jquery - 使用 jQuery 从 Flickr 获取图像的高度而不加载图像文件?

javascript - filereader.onload 中的函数未在 javascript 中执行

javascript - 如何将 NSF OpenTopography 点云颜色数据转换为 RGB 值?

javascript - jQuery 根据标签标签从 span 标签返回文本

c# - 我们可以在.net窗口应用程序中运行javascript吗

javascript - JQuery:显示后删除了事件监听器:无?

jquery - Flask-Restful API 和 JSON 问题中的 Unicode