2014-02-28 77 views
-1

我想用一個.json文件來創建一系列在我們網站上的多個頁面上使用的對象,然後使用getJSON函數將它們拉到網站上的不同頁面中在Jquery中。我希望得到一些幫助的是確定如何根據我傳遞給div內的特定屬性的值從文件中獲取某些對象。 我有大部分的代碼,但我似乎錯過了一些東西,讓它工作。通過使用專家屬性返回某些JSON對象

這裏是頁面內的div,我正在使用傳遞數據鍵我想要getJSON函數以及追加返回的數據。

<div id="moreSolutions" boxes="revcyle ev ev_for_physicians"></div> 

這裏有一對夫婦從以.json文件,我從拉數據對象:

[ { 
"divName":"ev", 
"link":"/pages/our-solutions/t-systemev.php", 
"class":"moreSolutionsDiv", 
"class2":"moreSolutionsDivSubHead", 
"id":"ev", 
"span1":"<center><span class='h3'>EV™<br /></span></center>", 
"span2":"<center>Easy, Effective, EDIS</center>" 
} 
} 
, 
{ 
"divName":"evForPhysiciansDiv", 
"link":"/pages/our-solutions/ev_for_physicians.php", 
"class":"moreSolutionsDiv", 
"class2":"moreSolutionsDivSubHead", 
"id":"evForPhysiciansDiv", 
"span1":"<center><span class='h3'>EV™ <br />for physicians</span></center>", 
"span2":"<center>Take back control of your documentation</center>" 
} 
] 

這是我使用來獲取內容的jQuery:

$("document").ready(function(){ 
var searchField = $('#moreSolutions').attr("boxes"); 
var searchArray = new Array; 
searchArray = searchField.split(' '); 
$.getJSON('data.json', function(data) { 
var output = ""; 
var index = 0; 
$.each(data, function(key, val){ 
index ++; 
output += "<a href='"+val.link+"'>";      
output += "<div class='"+val.class+"'>"; 
output += val.span1; 
output += "<div id='"+val.id+"'></div>"; 
output += "<div class='"+val.class2+"'>"; 
output += val.span2; 
output += "</div>"; 
output += "</div>"; 
output += "</a>"; 
});     
$("#moreSolutions").html(output);  
}); 

});

我幾乎可以做所有事情,包括從我的div中獲取屬性到數組中,但我很難弄清楚如何循環返回的數據以獲取我想要的內容。理想情況下,我的查詢會詢問所有具有「divName」值的鍵,然後返回整個數據集中的所有數據。 I.E.如果我詢問關鍵字「ev」,我會找回鏈接,類,class2,id,span1和span2鍵和值。 預先感謝您的幫助。

回答

0

underscore.js有一堆用於處理對象和數組的有用函數。

一旦你有了你的JSON數據,你可以使用_.filter函數來得到與真相測試相匹配的對象。真相測試是對象的divName屬性是否在您的搜索項目列表中。只要匹配完成,就可以使用_.each遍歷每個對象並構建輸出。

$("document").ready(function(){ 
    var searchField = $('#moreSolutions').attr("boxes"); 
    var searchArray = searchField.split(' '); 
    $.getJSON('temp.json', function(data) { 
     var matches = _.filter(data, function(jsonObj) { 
      return _.contains(searchArray, jsonObj.divName); 
     }); 
     var output = ""; 
     _.each(matches, function(val) { 
      output += "<a href='"+val.link+"'>";      
      output += "<div class='"+val.class+"'>"; 
      output += val.span1; 
      output += "<div id='"+val.id+"'></div>"; 
      output += "<div class='"+val.class2+"'>"; 
      output += val.span2; 
      output += "</div>"; 
      output += "</div>"; 
      output += "</a>"; 
     });     
     $("#moreSolutions").html(output);  
    }); 
}); 
+0

嗨基爾尼,謝謝你的迴應。我確實嘗試了這些代碼的一些不同的變體,但我無法讓它工作。我對.json相當陌生,所以如果你可以附加一個json文件(不管是簡單的)還是你用來獲取數據的jQuery的全功能示例,真正有幫助的是什麼。一旦我掌握了這一點,並且我知道它的工作原理,那麼我可以更容易地反向工作並弄清楚發生了什麼。 – user3058091

+0

以上代碼適用於您發佈的JSON。如果它不適合您,請發佈您嘗試過的內容,看到的內容以及期望看到的內容。 – kielni

+0

我添加了jQuery和underscore-min.js到頭文件的鏈接,然後在稱爲

的div之後在html頁面中逐字使用您的代碼。 .json數據放入同一文件夾內的一個名爲temp.json的文件中。 – user3058091