JSON数据可能不正确格式化

问题描述:

我有下面的脚本不工作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": "" 
    } 
] 

作为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的代码。

它不是一个格式问题。你有一个数组。数组中的每个元素都是对象字面值。每个对象文字都有一个属性 - 每个对象都有一个不同的属性。 'full_name'是只有一个对象文字的属性 - 从底部开始是4。

换句话说,并非数组中的每个元素都有full_name属性。如果他们都这样做了,你就不会被定义为不确定。

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>'); 
    }