2015-10-26 85 views
0

我想通過使用JQuery的.load()來使其中的動態內容具有div,但沒有提供的解決方案,我發現似乎工作就像我想要的。Jquery .load()重寫整個頁面

目前,我有以下設置:

t1.html(主頁)

<html> 
    <head> 
     <title>TODO supply a title</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <script src="ts1.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.js"></script> 
    </head> 
    <body> 
     <div>TODO write content</div> 
     <script> 
      $(document).ready(function(){ 
       init_s(); 
      });   
     </script> 
     <div> 
      <div id="dt1"></div> 
     </div> 
    </body> 
</html> 

t3.php(內容應該被加載)

<?php 
    echo '<div id="dt1"><script>document.write(Date());</script></div>'; 
?> 

ts1.js(文件包含腳本)

function init_s() 
{ 
    setInterval(function(){ 
    $("#dt1").load('t3.php'); 
    }, 2000); 
}; 

,但我只是似乎沒有得到它的工作。加載頁面後,它執行命令並完全替換文檔主體。

我也試着像

$("#dt1").load('t3.php #dt1>*',''); 

$("#dt1").load('t3.php #dt1'); 

其他方法由於整個身體現在在t3.php的DT1的內容所取代,在div本身缺少,因此沒有更新。

我想我可能需要包裹div和其他div的另一個div,但我沒有擺脫「取代全身」的行爲,導致只有一個更新,取代了整個身體而不是內容的div。

回答

1

這就是document.write所做的。

如果您在處於關閉狀態(即已經加載(其中有))的文檔中運行它,它將隱式調用document.open並擦除現有文檔。

使用DOM操作而不是document.write

+0

我想這是有道理的。不過,我有點缺乏如何獲得結果的想法。有沒有一種優雅的方法,或者我只是想嘗試將t3.php加載到var中並提取數據,然後使用replacewith?這對我來說似乎非常不方便 – Bryde

0

顯然最好不要使用javascript來標記其他頁面。 依靠t3.php中的普通PHP獲得了一個工作解決方案。

在ts1.js呼叫保持不變

function(){ 
    setInterval(function(){ 
     $("#dt1").load('t3.php'); 
    }, 2000); 
}; 

爲t3.php我用下面來測試它是否如預期運行

<?php 
    $date = date('Y-m-d H:i:s'); 
    echo $date; 
?> 

像昆汀刪除文件撰寫()建議解決覆蓋問題,而不是像預期的那樣使用常規的PHP回聲結果將內容返回給DIV,並且不需要DOM操作,這是迄今爲止我的項目最簡單的方法。