2016-04-24 28 views
1

這裏是我想使用的文本(經常變化,所以腳本應始終從源頭上重新聚首吧):GET變量出來的文本字符串的[jQuery的]

{"current_players":0,"alive":0,"spectators":0,"max_players":64,"gamemode":"Free For All","start_time":1461428927679} 

我基本上要創建一個可以直觀顯示這些變量的表格。 它應該是這個樣子到底:

/* Ignore me */ 
 
td { 
 
    border: 1px solid grey; 
 
} 
 
/* Stop ignoring */
<table> 
 
    <tr> 
 
    <td>Players</td> 
 
    <td>X</td><!-- Variable of "current_players" --> 
 
    </tr> 
 
    <tr> 
 
    <td>Gamemode</td> 
 
    <td>FFA</td><!-- Variable of "gamemode" --> 
 
    </tr> 
 
    <tr> 
 
    <td>...</td> 
 
    <td>X</td><!-- And so on... -> 
 
    </tr> 
 
</table>

任何想法,我可怎麼辦呢?

在此先感謝。

回答

1

你必須使用Javascript解析json。見http://www.json.org/js.html並參見http://json.org/example.html。如果您使用的是任何服務器端語言,則可以使用擴展來輕鬆解析json。例如,Php具有內置的函數來處理json。

var myJSONObject = { 
 
    "current_players": 0, 
 
    "alive": 0, 
 
    "spectators": 0, 
 
    "max_players": 64, 
 
    "gamemode": "Free For All", 
 
    "start_time": 1461428927679 
 
}; 
 
document.getElementById("players").innerHTML = myJSONObject.current_players; 
 
document.getElementById("gamemode").innerHTML = myJSONObject.gamemode; 
 
document.getElementById("alive").innerHTML = myJSONObject.alive; 
 
document.getElementById("max_players").innerHTML = myJSONObject.max_players; 
 
<table> 
 
    <tr> 
 
    <td>Players</td> 
 
    <td id='players'></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Gamemode</td> 
 
    <td id='gamemode'></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Alive</td> 
 
    <td id='alive'></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Max Players</td> 
 
    <td id='max_players'></td> 
 
    </tr> 
 
</table>

編輯:

你想要的是從URL自動刷新JSON,你用這個使用jQuery: -

setInterval(function(){ 
    console.log("Getting scores..."); 



    $.get("IPOfYourChoice:88", function(data) { 
     myJSONObject = JSON.parse(data); 
     document.getElementById("players").innerHTML = myJSONObject.current_players; 
     document.getElementById("gamemode").innerHTML = myJSONObject.gamemode; 
     document.getElementById("alive").innerHTML = myJSONObject.alive; 
     document.getElementById("max_players").innerHTML = myJSONObject.max_players; 
    }); 

}, 3000); 

有了這個代碼,您可以每3000毫秒(3秒)自動刷新分數

+0

我說我的問題是錯的,但我用的字符串會更新到遊戲的當前統計數據。當我把所有的東西都存儲在一個像你這樣的變量中時,那麼它不會是最新的..對吧? – Voakie

+0

@Voakie No.簡單地將字符串存儲在變量中本身不會做任何事情。你必須調用'document.getElementById(「players」)。innerHTML = myJSONObject。current_players;'等等來更改表中的值以使用json字符串 – khandelwaldeval

+0

在這種情況下,所有內容都存儲在'myJSONObject'中。我在我的問題中發佈的字符串可以通過打開IPOfYourChoice:88來獲得,並且使用$ .get()將其存入我的文檔中。只要這個地址上的字符串發生變化,'myJSONObject'也應該改變,這並不是因爲它只是一個手工定義的變量。 – Voakie

2

var data = { 
 
    "current_players": 0, 
 
    "alive": 0, 
 
    "spectators": 0, 
 
    "max_players": 64, 
 
    "gamemode": "Free For All", 
 
    "start_time": 1461428927679 
 
}; 
 

 
!(function($) { 
 

 
    var $tbl = $('table'); 
 
    for (param in data) { 
 
    $tbl.append('<tr><td>' + param + '</td><td>' + data[param] + '</td></tr>') 
 
    } 
 

 
})(jQuery);
/* Ignore me */ 
 

 
td { 
 
    border: 1px solid grey; 
 
} 
 
/* Stop ignoring */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 

 
</table>

你可能會需要從數據JSON

0

一些用戶友好的名稱來代替字段名,而不只是那些名字,如果你都OK使用jQuery插件,然後請有看一下Jquery Data Table插件https://www.datatables.net/。它接受一個JSON輸入。因此,您不必爲了構建表而手動分配JSON並手動分配值。

它還配備了功能類似

  1. 搜索

  2. 排序。

  3. 分頁。

  4. 導出功能。