2017-06-02 44 views
0

我在一個簡單的項目中使用了這些代碼,我想在單擊按鈕時刷新新聞代碼。 src正在改變,但它不顯示打印一個簡單的JavaScript的PHP文件的內容。在實時頁面中刷新js src之後,document.write函數不起作用

這裏是個HTML

<marquee id="ticker"></marquee> 
<button onclick="refresh()">Refresh</button> 

這裏的JS

function refresh(){ 
    document.getElementById('ticker').innerHTML = "<script src='ticker.php?" + new Date().getTime() + "'></script>"; 
    } 

這裏就是裏面ticker.php

<?php 
echo "document.write('It is the scrolling news');"; 
?> 
+1

不應該'ticker.php'是一個HTTP請求與回調,而不是一個JS腳本源? –

+0

試圖使它簡單 –

回答

1

使用JQ uery來調用至極的AJAX功能,你去到PHP文件,任何你想要的

var refresh = function(){ 

    $.ajax({ 
     url: 'ticker.php', 
     type: 'POST', 
     data: yourJsonData, 
    }) 
    .done(function(msg) { 
     document.getElementById('ticker').innerHTML = "<script src='ticker.php?" + new Date().getTime() + "'></script>"; 
    }) 
    //msg is equal to "document.write('It is the scrolling news');" 
    //then JSON.parse(msg); to convert to a javascript object 
    .fail(function(err) { 
     console.log("error"+err); 

    }) 
    .always(function() { 
     console.log("complete"); 
    }); 

} 
2

那麼實際上的回報,插入innerHTML腳本不被瀏覽器解析,因此,不能下載。所以你的服務器不應該在這裏收到任何請求。

執行此操作的方式(以編程方式在頁面中插入新腳本)使用document.createElement方法創建新的腳本元素。 (見本線程https://stackoverflow.com/a/13122011/2745879

這是做到這一點的方式:

function refresh(){ 
    var script = document.createElement("script"); 
    script.src = "/ticker.php?" + new Date().getTime(); 
    document.head.appendChild(script); 
} 

這應該下載新的腳本並運行它:)

+0

會改變與原生JavaScript工作的SRC? –

+0

你是什麼意思「原生JavaScript」?如果你的意思是一個JavaScript文件(沒有PHP),是的它將完全工作! – atomrc

+0

如果我使用javascript更改腳本標記的源並在源代碼之後添加一個帶'?'的時間戳,那麼瀏覽器會解析並執行腳本嗎? –

相關問題