2014-05-09 116 views
0

我有一個標準的HTML頁面的index.php,而這個頁面中我有一個的Javascript不加載Ajax的DIV負載

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

我用一個簡單的onclick函數來完成這個div的AJAX變化。我不會粘貼整個Ajax調用。

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

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

<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> 
+0

您可以嘗試在xmlhttp – Maxzeroedge

+0

成功參數警告所以你不能使用或加載的JavaScript通過Ajax調用加載的頁面上? – Mediatomcat

+0

是message.php的警報腳本部分嗎? –

回答

0

正如一些評論家已經指出,<script>小號在通過設置DOM節點的innerHTML屬性將HTML注入到頁面中時,AJAX響應內部不會執行。如果你真的需要執行這些腳本:

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調用的「成功」處理程序應該包含運行post-AJAX所需的邏輯。

+0

謝謝你的工作。 – Mediatomcat