2016-12-16 79 views
0

我有一個設備,它以XML格式導出數據。 我想在我的網頁上顯示這些數據+ ajax每秒刷新一次。熱得到JSON格式的PHP變量,並通過AJAX刷新

所以我的PHP文件是:

<?php 
$xml=simplexml_load_file("http://admin:[email protected]/st0.xml") or die("Error: Cannot create object"); 
echo json_encode($xml); 
exit(); 

這將顯示:

{ 「OUT0」: 「1」, 「OUT1」: 「1」, 「OUT2」: 「1」, 「OUT3」: 「1」, 「OUT4」: 「1」, 「OUT5」: 「1」, 「OUT6」: 「1」, 「DI0」: 「上」, 「DI1」: 「上」,「DI2 「:」 上」, 「DI3」: 「上」, 「IA0」: 「473」, 「IA1」: 「166」, 「IA2」: 「359」, 「IA3」: 「187」, 「IA4」: 「4326」, 「IA5」: 「1832」, 「IA6」: 「36」, 「IA7」: 「198」, 「IA8」: 「6」, 「ia9」: 「234」, 「IA10」:「 - 600" , 「ia11」: 「246」, 「ia12」: 「 - 600」, 「ia13」: 「0」, 「ia14」: 「0」, 「IA15」: 「65952」, 「IA16」:「0 」, 「ia17」: 「854000」, 「ia18」: 「1000」, 「ia19」: 「192」, 「頻率」: 「5008」, 「責任」: 「500」, 「PWM」: 「0」, 「sec0」:「27」,「sec1」:「17」,「sec2」:「20」,「sec3」:「1」,「sec4」:「1481894628」}

所以,現在我知道如何顯示整個數據和刷新,但我現在不會如何將每個數據放在分隔div,例如。以只顯示有趣的部分:

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script> 
     $(document).ready(function(){ 
      setInterval(function() { 
       $("#load_results").load("get_xml.php"); 
      }, 1000); 
     }); 

    </script> 
    </head> 
    <body> 
     <div id = "load_results"></div> 
    </body> 
</html> 
+0

爲什麼不把它們放在桌子上? –

+0

爲什麼要將XML轉換爲JSON?只需傳遞XML,將其加載到jQuery中,然後使用jQuery Api從中獲取數據。 – ThW

+0

@Thw:其實你是對的,我不需要JSON。只是不知道如何傳遞XML來查詢,然後顯示特定的參數。 – Tikky

回答

0

你有2種情況:

  1. 要麼你知道JSON的格式,你可以建立在正確的格式使用jQuery(例如)DOM 結構你想 與你有確切的數據。

對於你將不得不訪問JSON對象的對象屬性,以便例如:

$("#load_results").load("get_xml.php"); 

變爲:

$.get("get_xml.php", function(data) { // retrieves the JSON from that file using AJAX 
    var parsedJSON = JSON.parse(data); // we convert the JSON string into a Javascript object 

    var formattedString = 'Our OUT0 is ' + parsedJSON.out0 + '<br>'; // we access the data in the Javascript object as for all Javascript objects, see http://www.w3schools.com/js/js_objects.asp 
    formattedString = formattedString + 'Our ia12 is ' + parsedJSON.ia12; // and so on 

    $('#load_results').html(formattedString); 
}); 
  • 要麼你不知道你根本不在乎的格式或 。在這種情況下,情況更簡單,您可以使用JSON美化工具來執行JavaScript,例如此處實現的一個 :http://jsfiddle.net/unLSJ/(由我以外的其他人向他歡呼)。
  • 對於選項2,這將是庫:

    // Library 
    window.jsonPrettifier = { 
        replacer: function(match, pIndent, pKey, pVal, pEnd) { 
         var key = '<span class=json-key>'; 
         var val = '<span class=json-value>'; 
         var str = '<span class=json-string>'; 
         var r = pIndent || ''; 
         if (pKey) 
         r = r + key + pKey.replace(/[": ]/g, '') + '</span>: '; 
         if (pVal) 
         r = r + (pVal[0] == '"' ? str : val) + pVal + '</span>'; 
         return r + (pEnd || ''); 
         }, 
        prettyPrint: function(obj) { 
         var jsonLine = /^(*)("[\w]+":)?("[^"]*"|[\w.+-]*)?([,[{])?$/mg; 
         return JSON.stringify(obj, null, 3) 
         .replace(/&/g, '&amp;').replace(/\\"/g, '&quot;') 
         .replace(/</g, '&lt;').replace(/>/g, '&gt;') 
         .replace(jsonLine, library.json.replacer); 
         } 
        }; 
    

    後您的代碼內的某處添加了這個庫,你可以更換

    $("#load_results").load("get_xml.php"); 
    

    $.get("get_xml.php", function(data) { // retrieves the JSON from that file using AJAX 
        var parsedJSON = JSON.parse(data); 
        $('#load_results').html(window.jsonPrettifier.prettyPrint(parsedJSON)); 
    }); 
    

    ,你將獲得一個漂亮的印刷JSON。

    +0

    thanx的評論,但在我的情況下,我只需要顯示一些數據的一部分。防爆。 out1和out2和pwm,所以我想要顯示特定的變量。在PHP中,我可以調用數組中的元素,但我不知道如何在JS/jquery中執行它 – Tikky

    +0

    所以問題在於您想要像選項1那樣訪問JSON對象。我已經擴展了選項1的解釋a位,希望它是有道理的。 – Octavian

    +0

    爲什麼你不能在php文件和ajax中做數據擺弄/顯示? –