2013-07-14 3 views
1

У меня возникли проблемы с select2. Я попытался загрузить удаленные данные, следуя документации API, однако я все еще получаю индикатор нагрузки, никаких ошибок, но данные не отображаются.Select2 не загружает удаленные данные

Вот код: https://gist.github.com/Fire-Dragon-DoL/5993136

Javascript:

(function() { 
    var $; 

    $ = jQuery; 

    $(function() { 
    $('a.submit-link').on('click', function(ev) { 
     ev.preventDefault(); 
     $(this).closest('form').submit(); 
    }); 
    $('.spinner-float').spinner({ 
     step: 0.01, 
     numberFormat: 'n', 
     min: 0 
    }); 
    $('.spinner').spinner({ 
     min: 0 
    }); 
    $('.select2-cities').select2({ 
     width: 200, 
     minimumInputLength: 1, 
     dropdownCssClass: 'bigdrop', 
     loadMorePadding: 300, 
     formatResult: function(obj, container, query, escapeMarkup) { 
     console.log("formatResult"); 
     return obj.name; 
     }, 
     formatSelection: function(obj, container) { 
     console.log("formatSelection"); 
     return obj.name; 
     }, 
     initSelection: function(element, callback) { 
     var id; 

     console.log("initSelection"); 
     id = $(element).val(); 
     if ((id != null) && id !== '') { 
      $.ajax(gon.cities_path + '/' + id + '.json', { 
      dataType: 'jsonp' 
      }).done(function(data) { 
      console.log("initSelection callback"); 
      console.log(data); 
      callback(data); 
      }); 
     } 
     }, 
     ajax: { 
     url: gon.cities_path + '.json', 
     dataType: 'jsonp', 
     data: function(term, page) { 
      return { 
      query: term, 
      page: page - 1 
      }; 
     }, 
     results: function(data, page) { 
      console.log("results"); 
      console.log(data); 
      return data; 
     } 
     } 
    }); 
    }); 

}).call(this); 

А вот ответ JSON:

{ 
"total": 8084, 
"results": [ 
{ 
"cap": 35031, 
"id": 8085, 
"name": "Abano Terme", 
"province": "PD", 
"state_id": 25 
}, 
{ 
"cap": 26834, 
"id": 8086, 
"name": "Abbadia Cerreto", 
"province": "LO", 
"state_id": 21 
} 
], 
"more": false 
} 

И часть HTML (Выбор2 правильно показывает, я не думаю, что это выпуск):

<!-- ... --> 
<script type="text/javascript"> 
    //<![CDATA[ 
    window.gon = {};gon.cities_path="http://localhost:3000/cities"; 
    //]]> 
    </script> 
<!-- ... --> 
<input class="select2-cities" id="travel_diary_city_id" name="travel_diary[city_id]" type="hidden" value="13987" /> 

В файле GIST вы также можете найти версию CoffeeScript кода. Я действительно не понимаю, что console.log не вызывается в любом случае, поэтому в основном функции форматирования и подобные вещи не вызывают.

Обновление 1: Решение некоторых проблем с кодом javascript, где некоторые ключи были внутри объекта ajax, а не конструктора.

ответ

3

Похоже, я использовал JSONP, не выполняя его на стороне сервера. Перемещение типа данных в json исправило проблему.

+0

Это просто решило мою проблему, спасибо! – Moeri

Смежные вопросы