2014-01-16 113 views
0

我有一個php代碼,它是一個div。它顯示隨機文本放置在random.txt文件中。我想刷新這個div,在每一個 - 比方說 - 加載新文本15秒,而不刷新whoe頁面。 我發現了幾個解決方案來重新加載div,而不刷新頁面,它似乎可以用AJAX或JS完成,但他們只刷新一個特定的內容或特定的文件,但我不知道如何插入這個代碼並刷新它。刷新包含PHP代碼的div,但不刷新頁面

這是我的div的樣子:

<div id="randomtext"> 
<?php 
include_once("GetRandomText.php"); 
$MPTextFile = "random.txt"; 
$MPSepString = "*divider*"; 
$MPTextToHTML = false; 
MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 
?> 
</div> 

它加載每隔更新隨機文本到div。

我試圖用下面的JS刷新div,但它根本不工作。對不起,我不擅長。

<script> 
var auto_refresh = setInterval(
function() { 
var newcontent= '<?php 
include_once("GetRandomText.php"); 
$MPTextFile = "random.txt"; 
$MPSepString = "*divider*"; 
$MPTextToHTML = false; 
MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 
?>'; 
$('#randomtext').html(newcontent); 
}, 1000); 
</script> 

<div id="randomtext"></div> 

在此先感謝。

回答

4

PHP腳本和Javascript在不同的環境中執行。 (分別爲您的服務器和用戶的瀏覽器。)

您需要做的是將嵌入式PHP腳本移動到單獨的PHP文件中。而使用財產以後這樣的:

content.php

<?php 
include_once("GetRandomText.php"); 
$MPTextFile = "random.txt"; 
$MPSepString = "*divider*"; 
$MPTextToHTML = false; 
MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 
?> 

HTML網頁

<script> 
var auto_refresh = setInterval(
(function() { 
    $("#randomtext").load("path/to/content.php"); //Load the content into the div 
}), 1000); 
</script> 
<div id="randomtext"></div> 

文件jQuery的裝載功能:http://api.jquery.com/load/

+0

謝謝,該腳本工作完美 – takacsbalazs

1

據我瞭解,你正試圖在瀏覽器中執行你的PHP是不可能的。您的服務器解析PHP並用隨機字符串替換該代碼。

您需要向您的服務器發送一個AJAX請求,它將評估此腳本並將其發送回客戶端。以簡化的方式:

request = new XMLHttpRequest(); 
request.open("GET", "my.php"); 
request.send(); 
$("#randomtext").html(request.response); 
+0

如果我把什麼我的PHP代碼到一個PHP文件,並從JavaScript調用它?它可以工作嗎? – takacsbalazs

+0

我爲它添加了一個示例調用,並且是 – henje

+0

是的,如果不刷新整個頁面,從jquery調用一個php頁面會更容易。 – Aljie