2016-11-29 15 views
0

所以我的問題是,我需要更新其他網站的一些數據,併爲調用該數據我有PHP函數在哪裏是URL作爲參數。因此,在JS中,我創建了一個函數,它與setInterval一起循環,其中我使用URL參數將數據存儲在哪個PHP函數中,但它總是返回相同的數據..(數據實際上正在播放軌道上的數據,因此數據已更改每+ - 3分鐘)數據只刷新頁面(F5)..但我需要更新後臺數據變化..Javascript的setInterval方法返回總是從PHP方法相同的結果,但我需要更改的數據

這是PHP函數

function get_content($URL){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $URL); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    $data = str_replace(",,","},",$data); 
    $data = str_replace("}}]}}","}]}}",$data); 
    $data = str_replace("]}}","}]}}",$data); 
    $data = str_replace(",}}","}}}",$data); 
    $data = str_replace("}}]}}","}]}}",$data); 
    return $data; 

在JS我的setInterval循環調用只有console.log才能顯示php功能的結果..

console.log(<?php echo (get_content("http://server1.internetoveradio.sk:8809/status-json.xsl"));?>["icestats"]["source"]) 
+1

這不是PHP的工作方式;作爲服務器端語言,在呈現HTML文檔之前,在頁面加載時執行任何PHP。如果你查看這個頁面的HTML源代碼,你會看到'php echo'不再處於'console.log'中。查看AJAX(異步JavaScript和XML)以在加載頁面後檢索內容:https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started –

+1

查看您呈現的源代碼,然後看看爲什麼這不起作用。你不能從Javascript調用PHP函數 - 你只能調用一個PHP腳本。 – lonesomeday

回答

1

好吧。在這種情況下,PHP只會被調用一次,有一次你會回顯get_content()的內容。

如果您想一遍又一遍地獲取內容,請使用XmlHTTPRequest調用一個PHP文件,然後返回get_content()的結果;

jQuery實現ajax(XmlHTTPRequest)來做到這一點。

jQuery.ajax({ 
    url: "http://path.to/your_script.php", 
    method: "get", 
    complete: function(response){ 
     console.log(response); 
    } 
}); 

編輯: 創建一個新的PHP文件並粘貼此:

<?php 

function get_content($URL){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $URL); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    $data = str_replace(",,","},",$data); 
    $data = str_replace("}}]}}","}]}}",$data); 
    $data = str_replace("]}}","}]}}",$data); 
    $data = str_replace(",}}","}}}",$data); 
    $data = str_replace("}}]}}","}]}}",$data); 
    return $data; 
} 

echo get_content("http://server1.internetoveradio.sk:8809/status-json.xsl"); 

在你的HTML,補充一點:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
    jQuery(document).ready(function(){ 
    jQuery.ajax({ 
     url: "http://path.to/your_script.php", 
     method: "get", 
     complete: function(response){ 
      console.log(response); 
     } 
    }); 
    }); 
</script> 

這是最rudimentory版本,但它應該希望你指向正確的方向。

+0

謝謝..但我不知道如何將該函數重寫成.php文件..通過AJAX做到這一點...我想這樣做..但我的PHP技能是在零水平。 。而PHP函數是由另一個程序員創建的......我需要解決這個問題:/ – strakz

相關問題