我有以下脚本,它不能100%工作,它返回大约20个未定义的,在这些未定义的位置之间,它将返回full_name:
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": ""
}
]
答案 0 :(得分: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 :(得分:1)
它不是格式化问题。你有一个阵列。数组中的每个元素都是一个对象文字。每个对象文字都有一个属性 - 每个属性都有一个不同的属性。 'full_name'只是一个对象文字的属性 - 从底部向上4个。
换句话说,并非数组中的每个元素都具有full_name
属性。如果他们都这样做了,你就不会被定义。
答案 2 :(得分: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>');
}