2017-02-17 61 views
0

我有接受來自推送通知,並把它格式化數據轉換成JSON這樣的功能:。每個不表現爲預期

{ 
    "sent": "02/17/2017", 
    "title": "Some Entry", 
    "body": "The main message here", 
    "picture": "http://example.com/me.jpg", 
    "phone": "555 641-6547" 
}, { 
    "sent": "02/13/2017", 
    "title": "Some Other Stuff", 
    "body": "Main content here", 
    "link": "http://mycom.com", 
    "phone": "555 555-6200" 
} 

正如你可以看到他們可能會或可能不會有所有的名稱/值對可用。

的代碼是爲了在一個模式彈出顯示的引導手風琴:

function show8(arr) { 
    alert('here ** ' + arr); // lets you see incoming data 

      arr = '[' + arr + ']'; 
      var i = 50 ;  
      var out = '';  
      out += '<div class="panel-group no_wrap widget uib_w_' + i + ' d-margins" data-uib="twitter%20bootstrap/accordion" data-ver="1" '; 
      i++ ; 
      out += 'id="bs-accordion-11">'; 
     $.each(JSON.parse(arr), function(idx, obj) { 
      out += '<div class="panel widget uib_w_' + i + ' panel-info" data-uib="twitter%20bootstrap/collapsible" data-ver="1">'; 
      i++ ; 
      out += '<div class="panel-heading"><h4 class="panel-title">'; 
      out += '<a class="accordion-toggle" data-toggle="collapse" href="#bs-accordion-group-' + i + '" data-parent="#bs-accordion-11">'; 
      out += '<small>' + obj.sent + '</small><br><strong><big>' + obj.title + '</strong></big><br>'; 
      out += '</a></h4></div>'; 
      out += '<div id="bs-accordion-group-' + i + '" class="panel-collapse collapse">'; 
      i++ ; 
      out += '<div class="panel-body"><div class="col uib_col_' + i + ' single-col" data-uib="layout/col" data-ver="0">'; 
      i++ ; 
      out += '<div class="widget-container content-area vertical-col">'; 
/* 
      if (obj.picture.length > 0) { 
       out += '<div class="widget uib_w_' + i + ' scale-image d-margins" data-uib="media/img" data-ver="0">'; 
       i++ ; 
       out += '<figure class="figure-align"><img src="' + obj.picture + '"></figure></div>'; 
      } 
*/ 
      out += '<p>' + obj.body + '</p><br><br>'; 

/*   
    if (obj.phone.length > 0) {out += 'Call: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" '; 
      out += 'data-uib="twitter%20bootstrap/button" data-ver="1" '; 
      out += 'onclick= "placeCall(\'' + obj.phone + '\')">' + obj.phone + '</button><br>';} 
      i++; 
      if (obj.link.length > 0) {out += 'Website: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" '; 
      out += 'data-uib="twitter%20bootstrap/button" data-ver="1" '; 
      out += 'onclick= "viewPage(\'' + obj.link + '\')">' + obj.link + '</button><br>';} 
      i++; 
*/ 
      out += '<span class="uib_shim"></span></div></div></div></div></div>';  
     }); 
     out += '</div>'; 

       $(".recent").html(out); 
       $(".uib_w_8").modal("toggle"); 
} 

如果取消註釋任何的註釋掉的代碼,該列表炸燬並未能顯示。 if(val.length> 0)認識到該值在那裏,並且它有內容,但不會顯示內容。

缺少什麼我在這裏?

+0

'名單吹up'這是什麼意思?你在控制檯中遇到錯誤嗎?如果是這樣,哪些錯誤? –

+0

對不起,它不能顯示整個列表 –

+0

你爲什麼這樣做? 'JSON.parse(arr)'你是否在別的地方把它串起來?如果(obj.picture.length> 0){'將其改爲:'if((obj.picture)&&(obj.picture.length> 0)){' - 與此相同,鏈接並不總是存在'if(obj.link.length> 0){' –

回答

0

的沒有圖像關鍵這將失敗:

if (obj.picture.length > 0) {

如果您在控制檯看,你會看到類似這樣的:

無法讀取的不確定

長度

更改爲:

if ((obj.picture) && (obj.picture.length > 0)) {

相同這一點:

if (obj.link.length > 0) {

obj.link並不總是存在,將其更改爲

if ((obj.link) && (obj.link.length > 0)) {

+1

總是最簡單的事情,讓你起來,然後讓你感到愚蠢的時候一切都顯露出來! .length的測試應該看看是否存在。那麼爲什麼不直接問這個問題。是的,我是一個新人,儘管我不得不在js工作二十年!它根本沒有黎明,如果(obj.picture)是布爾值。 ---謝謝Darren Sweeney! –

+0

歡迎編輯,很高興幫助 - 對象是非常有趣的工作,但小心處理哈哈 –