2012-09-28 85 views
0

我正在嘗試刷新我的網站的一部分(顯示主題列表的左側部分),但它不適用於我。如果點擊刷新按鈕,我會在左邊的部分看到一個非常奇怪的屏幕。我使用的腳本是這樣的:部分刷新的網站無法正常工作

$(function() { 
    $("#refresh").click(function(evt) { 
     $(".bgleft").load("left.php") 
     evt.preventDefault(); 
    }) 
}) 

怪異的屏幕,我得到的是一個白色的空白屏幕上有一個隨機文本(不存在)。我不明白爲什麼會發生。舉一個實例:轉到(編輯出) 然後單擊左側框架中的「刷新」。

編輯:

的HTML片段:<body class="bgleft">

回答

1

在left.php有兩行代碼被表示theese字符。

for(var n = 1; n < 7; n++) 
document.write(String.fromCharCode(Math.round(Math.random()*25)+97)); 

嘗試刪除它們,它應該有所幫助。

同樣在其他答案中,只發送<body>的內容作爲迴應,因爲腳本已經包含在網站中。

+0

它應該刷新,如果你刪除這些線。他們對刷新頁面沒有任何共同之處。 –

+0

該網站已被緩存,現在可以使用。謝謝Juris! – 1BJK903

0

你怎麼樣在同一頁面加載HTML,HEAD,BODY裏面目前的BODY標籤?

$(function() { 
    $("#refresh").click(function(evt) { 
     evt.preventDefault();   
     $(window.top.window).find('frame[name=left]').reload(); 
    }) 
}) 
+0

看到我的第一篇文章的編輯。 – 1BJK903

+0

那你爲什麼不用JavaScript來刷新框架? 'location.reload();' – Gustonez

+0

這是一個選項,但我不想使用JavaScript,並希望點擊它。無論如何,我可以使用它,這是真的。 – 1BJK903

1

在進行部分更新時發送完整的HTML頁面通常不是一個好主意。如果你看看你的left.php產生了什麼,這是你在iframe中使用的完整頁面(有<html>標籤和一切)。

要麼創建一個頁面,只顯示left.php的主體,並使用它來進行部分更新。或者查看here瞭解如何刷新iframe。

PS:Framesets無可救藥地被棄用,真正限制了設計,動態/ javascript功能和未來的可擴展性。考慮不使用它們...

+0

我知道這不是一個好主意,但是對於這種類型的網站來說,最好使用,我猜。 這是html代碼片段: – 1BJK903

+0

使用框架幾乎沒有「更好」。這是一個不推薦的技術(在HTML5中被刪除),DOM和javascript支持在瀏覽器中不一致,使得它們很難處理。各瀏覽器的滾動條行爲也不一致,因此難以創建跨瀏覽器兼容設計以及其他許多其他問題。但它是你的網站,你會按照你的方式去做;) – pap

0

你應該只提取要更新的內容,而不是整個頁面。目前,整個頁面正在提取,包括htmlbody甚至script標籤。因爲這個,jQuery和其他腳本也被重新加載。這可能會在稍後導致重大問題。

+0

我怎樣才能獲取內容?據我所知,該腳本位於left.php中,這只是左邊的框架。 – 1BJK903