Параметры для выбора раскрывающегося списка добавляет n раз количество записей, извлеченных из базы данных - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь создать страницу входа и при успешном входе перечислить всех пользователей в выпадающем списке. Я делаю следующее:

  1. На document.ready, я проверяю учетные данные для входа в систему следующим образом:
$.ajax({
  url: ‘ /api/login
  ',
  dataType: 'json',
  type: 'post',
  contentType: 'application/json',
  data: JSON.stringify(args),
  success: function(data) {
    if (!data.error) {
      console.log("You are logged in!", data.result);
      loadUsers();
    } else {
      console.log(data.error);
    }
  }
},
});
  1. Значение loadUsers() указано ниже:
function loadUsers() {
  $.ajax({
    url: '/adminapi/getlogins',
    dataType: 'json',
    type: 'post',
    contentType: 'application/json',
    async: true,
    success: function(data) {
      if (!data.error) {
        console.log("loaded select", data.result)
        $.each(data.result, function(k, v) {
          $('<option>').val(v.loginid).text(v.firstname + "" + v.familyname)
            .appendTo('#selectLogin');
          loginUserList.push(data.result);
        });
      } else {
        console.log(data.error);
      }
    },
  });
}

loginUserList глобально определен как пустой массив.

При входе в систему я вижу, что следующие записи в консоли для loginUserList

users: (2) [{…}, {…}]
0: {loginid: 1, logintype: 2, firstname: "abc", familyname: "aaa",     email: "aa@in.com"} 
1: {loginid: 2, logintype: 1, firstname: "king", familyname: "abc", email: "king@mm.com"} 
length: 2 __proto__: Array(0)

Но когда я выбираю опцию из выпадающего списка, loginUserList показывает следующее в консоли.

users (2) [Array(2), Array(2)]
0: Array(2) 
0: {loginid: 1, logintype: 2, firstname: "abc", familyname: "aaa", email: "aa@in.com"} 
1: {loginid: 2, logintype: 1, firstname: "king", familyname: "abc", email: "king@mm.com"} 
length: 2 __proto__: Array(0) 
1: Array(2) 
0: {loginid: 1, logintype: 2, firstname: "abc", familyname: "aaa", email: "aa@in.com"} 
1: {loginid: 2, logintype: 1, firstname: "king", familyname: "abc", email: "king@mm.com"}  
length: 2 __proto__: Array(0) 
length: 2 __proto__: Array(0)

И событие onchange выглядит следующим образом:

document.getElementById("selectLogin").addEventListener("change",function(){
 console.log("users",loginUserList)
});

Я не могу понять, почему это происходит. Пожалуйста, помогите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...