javascript
  • php
  • css
  • ajax
  • 2016-12-19 114 views 1 likes 
    1

    在服務器發生什麼事情之後,是否可以更改CSS元素的顏色?使用AJAX更改CSS樣式並且無需重新加載

    在我的程序中,我點擊一個按鈕,然後啓動一個PHP程序。該程序更改服務器中的值(Raspberry Pi的GPIO端口的值)。

    有沒有可能,我可以改變一個CSS屬性與PHP加載後?如果我嘗試AJAX,它沒有影響,因爲該網站已經加載,並且輸出對網站沒有影響。

    <div id="output"> 
        <script type='text/javascript'> 
        var gpio_status = '0'; 
        </script> 
    </div> 
    
    <script type="text/javascript"> 
    var php_output = document.getElementById("output"); 
    var request; 
    
    function gpio_out(gpio_nr) { 
        request = new XMLHttpRequest(); 
        request.open("post", "gpio_out.php", true); 
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
        request.send("daten=" + gpio_nr); 
        request.onreadystatechange = request_status; 
    
    } 
    
    function request_status() { 
        if (request.readyState == 4 && request.status == 200) { 
        php_output.innerHTML = request.responseText; 
        } 
    } 
    </script> 
    

    內容的AJAX文件:

    $gpio_status = shell_exec("cat /sys/class/gpio/gpio" . $gpio_nr . "/value"); 
    
        echo "<script type='text/javascript'>"; 
        echo "var gpio_status = '$gpio_status';"; 
        echo "</script>"; 
    

    最後我想要的JS變量 「gpio_status」。但它始終具有與我在開始時給出的值相同的值:0.如果我使用colsole.log()變量,我總是會得到0.但是,其他代碼正常工作。

    +0

    應該很容易在ajax回調中通過使用javascript切換類或內聯樣式來完成。總體問題的細節太模糊了。花點時間閱讀[問]和[問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist),然後用適當的細節和代碼更新問題 – charlietfl

    +1

    '如果我嘗試AJAX它沒有影響,因爲該網站已經加載,並且輸出對網站沒有影響 - 你做錯了,顯示代碼 –

    +0

    你能檢查我的代碼嗎? – ChiefAlu

    回答

    0

    PHP是一種服務器端語言,這意味着(對於所有的意圖和目的),你用請求命中它並吐出響應並死亡。是的,如果您願意重新加載頁面並且願意讓PHP控件在後端處於某種狀態,您可以更改元素的CSS樣式。

    如果我嘗試AJAX,它沒有影響,因爲該網站已經加載,並且輸出對網站沒有影響。

    因爲AJAX是爲了解決與您的問題完全相同的問題而發明的,所以您必須是AJAX錯誤的。

    +0

    但我認爲JS解釋器不會加載我從AJAX加載的代碼,因爲該網站已經加載。 – ChiefAlu

    相關問題