2011-06-06 70 views
1

我有下面的腳本不工作100%,則返回20不確定的,在這些不確定之間的某個地方,它會返回FULL_NAME:JSON數據可能不正確格式化

function get_staff_details(phrase) { 
    $.ajax({ 
     url: 'get_staff_details.aspx?rand=' + Math.random(), 
     type: 'POST', 
     dataType: 'json', 
     data: { strPhrase:phrase }, 
     error: function(xhr, status, error) { 
      console.log(status); 
      console.log(xhr.responseText); 
     }, 
     success: function(results) { 
      var itemList = results; 
      var buildHTML = []; 

      for (var i = 0; i < itemList.length; i++) { 
       buildHTML.push('<div class="container"><a href="#" class="title" target="_blank">' + itemList[i].full_name + '</a></div>'); 
      } 

      $('.portlet-content').empty().append(buildHTML.join('<hr />')) 
     } 
    }); 
} 

我認爲它有與json數據有關,可能沒有正確格式化來循環使用它?

[ 
    { 
     "image": "http://intranet/images/jb.jpg" 
    }, 
    { 
     "position": "Marketing Manager" 
    }, 
    { 
     "cms_initials": "JB" 
    }, 
    { 
     "department_name": "Marketing" 
    }, 
    { 
     "secretary": "" 
    }, 
    { 
     "fee_earner": "" 
    }, 
    { 
     "mon_from": "08:30" 
    }, 
    { 
     "mon_to": "17:00" 
    }, 
    { 
     "tue_from": "08:30" 
    }, 
    { 
     "tue_to": "17:00" 
    }, 
    { 
     "wed_from": "08:30" 
    }, 
    { 
     "wed_to": "17:00" 
    }, 
    { 
     "thu_from": "08:30" 
    }, 
    { 
     "thu_to": "17:00" 
    }, 
    { 
     "fri_from": "08:30" 
    }, 
    { 
     "fri_to": "17:00" 
    }, 
    { 
     "full_name": "Jo Bloggs" 
    }, 
    { 
     "extension": "0000" 
    }, 
    { 
     "direct_line_number": "0000000000" 
    }, 
    { 
     "blackberry_number": "" 
    } 
] 

回答

2

作爲hvgotcodes said,你有什麼是一堆各個條目,每一個都是隻用一個對象的數組物業(每個物業都有不同的物業)。

你可能想要這個:

[ 
    { 
     "image": "http://intranet/images/jb.jpg", 
     "position": "Marketing Manager", 
     "cms_initials": "JB", 
     "department_name": "Marketing", 
     "secretary": "", 
     "fee_earner": "", 
     "mon_from": "08:30", 
     "mon_to": "17:00", 
     "tue_from": "08:30", 
     "tue_to": "17:00", 
     "wed_from": "08:30", 
     "wed_to": "17:00", 
     "thu_from": "08:30", 
     "thu_to": "17:00", 
     "fri_from": "08:30", 
     "fri_to": "17:00", 
     "full_name": "Jo Bloggs", 
     "extension": "0000", 
     "direct_line_number": "0000000000", 
     "blackberry_number": "" 
    } 
] 

...這是一個只有一個入口,帶屬性的整個列表對象的數組。 (推測總共有多個對象,但只有一個以上。)如果是這樣,您需要更改生成JSON的代碼。

1

它不是一個格式問題。你有一個數組。數組中的每個元素都是對象字面值。每個對象文字都有一個屬性 - 每個對象都有一個不同的屬性。 'full_name'是隻有一個對象文字的屬性 - 從底部開始是4。

換句話說,並非數組中的每個元素都有full_name屬性。如果他們都這樣做了,你就不會被定義爲不確定。

1

JSON是單個對象數組。這些對象中只有一個具有「full_name」屬性。

如果你想只是值,你可以改變你的循環:

for (var i = 0; i < itemList.length; i++) { 
     if (itemList[i].hasOwnProperty('full_name')) 
      buildHTML.push('<div class="container"><a href="#" class="title" target="_blank">' + itemList[i].full_name + '</a></div>'); 
    }