2013-04-04 39 views
0

我遇到了一個問題,我要傷害MVC範式,所以我寧願問你該怎麼做。 我得到了一個頁面,每10秒刷新一次jQuery .post() - 方法。jQuery .post()刷新頁面PHP變量沒有在Cake中出現白屏PHP

setInterval(function() { 
    $.post("http://XYZ.de<?php echo $this->webroot."Posts/index"; ?>", { liveUpdate: "true" }, 
     function(response) { 
      $('#loadingContent').html(response); 
     } 
    ); 
}, 10000); 

現在,這裏的「信息/索引」放在我有打電話給蛋糕的PostsController.php,讓我重新設置的變量。

但它不工作的方式和響應填寫了所有的普通頁面調用的HTML,但我只想要沒有HTML附加到該div更新純PHP變量。

我在做什麼錯? 預先感謝您的耐心等待。

+2

頁面每10秒鐘刷新一次...如果數據經常發生變化,那麼可以,但是如果很少,您應該查看彗星式解決方案。 – icebreaker 2013-04-04 18:14:10

+2

如果我理解你的問題,問題是你的控制器正在返回一個普通的HTML頁面響應,當你不需要的時候 - 因爲你的發佈代碼只是響應並重新加載一個div。如果確實是這個問題,那麼錯誤在於你的PHP代碼,而不是你的jQuery代碼。您需要在PHP代碼中執行某些操作,以便完整的HTML頁面模板不會返回到JavaScript。 – BrianHall 2013-04-04 18:25:13

+0

我同意BrianDHall。考慮添加一個新的頁面來通過AJAX調用,輸出一些簡單和可解析的東西,比如JSON而不是HTML。 – thelr 2013-04-04 18:33:34

回答

0

由於你的數組是複雜的多級別,你不想解析JSON,我看到這樣做的唯一方法就是使用jQuery load()。

setInterval(function() { 
    jQuery("#RefreshMeOnPage") 
    .load("http://XYZ.de<?php echo $this->webroot."Posts/index"; ?> #RefreshMeInResults > *", {liveUpdate: "true"}); 
    }, 10000); 

它將使POST請求到服務器,並使用ID RefreshMeOnPage與新接收到的元素的id爲RefreshMeInResults內容替換現有元素的內容。 Doc http://api.jquery.com/load/

注:仍然刷新率爲10秒,我認爲你應該看看阿賈克斯彗星解決方案http://cometdaily.com/maturity.html。只有在發生變化時纔會收到數據,但需要進行一些配置。

+0

感謝您的努力。想到它後,我看到我在控制器中的配置錯誤。如果我帶或不帶JSON的.post(),.load()或.ajax()都沒關係,那麼每種方法都需要某些重新生成的數據。我想我需要一個動態生成的視圖,以PHP的變量形式發送給具有foreach循環的特定表的PHP變量,這些變量只能通過更改控制器來實現。彗星的事情是一個奇蹟,也許我會在稍後深入探討...... – Karl 2013-04-04 20:59:31