2013-02-25 38 views
0

我在Slackware上運行nagios,我使用mklivestatus爲主機獲取json輸出。該文件的格式是這樣getjson與jquery移動從json文件格式化爲列表的列表

[["localhost","127.0.0.1",0]] 

我如何使用$.getJSON()獲得的價值和在HTML頁面中添加呢?或者是有沒有辦法改變JSON文件有以下格式:

{["host_name":localhost","host_ip":"127.0.0.1","status":0]} 

隨着我使用這個代碼上面的格式和工作正常

<script> 
    $.getJSON('status.json', function(data) { 
     var output = ''; 

     $.each(data, function(index, value){ 

      output += '<option value="'+value.host_name+'">'+value.host_name+' ('+value.status+')</option>'; 

     }); 

     $('#page').html(output); 

    }); 
</script> 

回答

1

有幾個問題:

  1. 最重要的是[["localhost","127.0.0.1",0]]是一個數組的數組,所以對待它就像一個。而不是value.host_name使用索引訪問它的成員value[0]
  2. 使用合適的事件JQM處理器(例如pageinit
  3. 我猜你想插入<option> s到一個select元素,而不是一個頁面。

。現在,因爲你有下面的標記

<div data-role="page" id="page"> 
    <div data-role="content">  
     <select id="select1"> 
     </select> 
    </div> 
</div> 

您填充您喜歡這個

$(document).on("pageinit", "#page", function(){ 
    $.getJSON("status.json", function(data){ 
     var output = ''; 
     $.each(data, function(index, value){ 
      output += '<option value="'+value[0]+'">'+value[1]+' ('+value[2]+')</option>'; 
     }); 
     $('#select1').html(output); 
    }); 
}); 

附:選擇菜單 BTW,這是無效的JSON

{["host_name":localhost","host_ip":"127.0.0.1","status":0]} 

應該

[{"host_name":localhost","host_ip":"127.0.0.1","status":0}] 
+0

我設法得到它的工作是這樣的:數據[指數] [0]。你的方式雖然更好。非常感謝您的幫助。你對無效的Json是對的。我寫的時候很粗心。 – vincent666 2013-02-26 12:45:34