jQuery Populate, не дожидаясь загрузки JSON из Google Fonts

Я использую плагин jQuery Populate для преобразования данных в большую форму. В нем есть раскрывающийся список типов шрифтов. (arial, helvetica и т. д.). Клиент хотел, чтобы я добавил шрифты Google к вариантам выбора в раскрывающемся списке, поэтому я использую вызов через JSON, чтобы получить имена шрифтов Google и добавить их в список. Они кажутся великолепными. Проблема в том, что заполнение, похоже, хочет уйти до завершения вызова JSON, поэтому оно не заполняется правильно. Вот порядок вещей, которые я делаю.

    $(document).ready(function()
     1. Make the JSON call and use append to add GF to the lists on the page as needed. This works
    2. $('#loginForm').populate(the data from the database); This works as long as I am not trying to match a GF.
    )

Кажется, я не могу заставить население ждать или знать, когда запускать ПОСЛЕ того, как JSON полностью заполнен. Если шрифт находится в исходном списке (helvetica), он заполняется. Если это от GF, то нет. Мне кажется, что он не может найти совпадение, потому что он еще не заполнен. Любая помощь? Спасибо всем!

РЕДАКТИРОВАТЬ: с кодом ниже

  var url = 'https://www.googleapis.com/webfonts/v1/webfonts?key=key';
  $.ajax({
   url: url,
   dataType: 'json',
   success: function(fonts){ 
      for (var i = 0; i < fonts.items.length; i++) {
       $('#main_font')
      .append($("<option></option>")
     .attr("value","GF-"+fonts.items[i].family)
     .text("GF-"+fonts.items[i].family));}
    },
   });
  //I put it in the ajaxStop because it does seem to wait for the menu to build above
   $(document).ajaxStop(function () {
   $('#loginForm').populate(<?php echo $list; ?>);
   })
//My drop down look like this
 <select name="main_font" id="main_font" class="required fontP">
  <option value="" selected="selected">Select</option>
  <option value="arial">Arial</option>
  <option value="verdana">Verdana</option>
  <option value="helvetica">Helvetica</option>
  <option value="times new roman">Times New Roman</option>
  </select>

Если заполняемая информация, поступающая в populate (), является одним из стандартных шрифтов, она заполняется. Если это один из шрифтов Google, который заполняется динамически, этого никогда не происходит. Я делаю это все время с динамически создаваемыми раскрывающимися списками, но никогда с данными, поступающими из запроса ajax.


person jeynon    schedule 17.07.2015    source источник


Ответы (1)


Поместите плагин заполнения в функцию обратного вызова успеха. У меня была аналогичная проблема.

Здесь массив Javascript не инициализирован

person Veki    schedule 17.07.2015
comment
Не помогло. Я даже пробовал ajaxStop, который, кажется, заставляет его ждать, пока все ajax не будет завершено, но он все еще просто не может найти своего совпадения в заполнении. Спасибо за вашу помощь. - person jeynon; 17.07.2015
comment
Вы уверены, что получаете данные из google api? - person Veki; 21.07.2015