The Web Services will only return those items to which the current user has permissions. So yes, it could be a permissions thing.
It looks like what you are trying to do is get a unique list of StaffName values. Since you haven't sorted by that column, you will get unpredictable results.
M.
It looks like what you are trying to do is get a unique list of StaffName values. Since you haven't sorted by that column, you will get unpredictable results.
var users = []; $().SPServices({ operation: "GetListItems", async: false, listName: listName, CAMLViewFields: "<ViewFields><FieldRef Name='StaffName' /></ViewFields>", CAMLQuery: "<Query><OrderBy><FieldRef Name='StaffName'/></OrderBy></Query>", completefunc: function(xData, Status) { $(xData.responseXML).SPFilterNode("z:row").each(function() { //if the name is already in the array then don't re-add or move indexvar thisStaffName = $(this).attr("ows_StaffName"); if(users[thisStaffName] === undefined) { users.push(thisStaffName); } }); } });