簡體   English   中英

Javascript未在Ajax div加載時加載

[英]Javascript not loading on Ajax div load

我有一個標准的html頁面index.php,在此頁面中,

<div id="alertMe">...</div>

我使用一個簡單的onclick函數對該div進行AJAX更改。 我不會粘貼整個Ajax調用。

xmlhttp.open("GET","message.php?msg=hello" , true); 

message.php加載后,我可以在alertMe div中顯示$ _GET ['msg']值。 但是,我在message.php文件中有一個簡單的javascript警報。

<script type="text/javascript">
  alert("I am an alert box!");
</script>

我無法彈出警報。 這是因為我試圖在div負載中運行javascript嗎? 我會認為這是一個普遍的要求。

有任何想法嗎?

====包含文件=====

index.php

<html>
 <script>
    function loadMsg(moduleID) {
        var xmlhttp;
        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 (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("alertMe").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","message.php?msg=hello" , true);
        xmlhttp.send();
    }
</script>
<body>
    <div id="alertMe"></div>
    <a href="javascript:void(0);" onclick="loadMsg();">Load Message</a>
</body>
</html>

message.php

<?php
echo $_GET['msg'];?>
<script type="text/javascript">
   alert("I am an alert box!");
</script>

正如一些評論者所指出的那樣,通過設置DOM節點的innerHTML屬性將HTML注入頁面時,AJAX響應中的<script>不會執行。 如果您確實需要執行這些腳本:

function setHtml(element, html) {
    element.innerHTML = html;

    var scripts = element.getElementsByTagName("script"),
        i = 0, script;

    for (i; i < scripts.length; i++) {
        script = scripts[i];

        if (script.type = "text/javascript" && !script.src) {
            eval(script.innerHTML);
        }
    }
}

編輯:我個人建議不要這樣做。 AJAX調用的“成功”處理程序應包含運行AJAX后所需的邏輯。

暫無
暫無

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

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