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

时间:2017-10-17 13:48:09

标签: 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">

非常感谢大家=)

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

1 个答案:

答案 0 :(得分:0)

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。但我建议不要这样做。