2015-05-27 5 views
5

Я использую Select2 для обеспечения динамических функций выбора на моей странице.Select2 errors - no response

Вот код: -

$("#Spon_Index").select2({ 
    placeholder: "Type to select a sponsor", 
    minimumInputLength: 3, 
    multiple: false, 
    width: 400, 
    ajax: { 
     url: "../control/autocomplete_sponsor.aspx", 
     data: function(term) { 
      return term; 
     }, 
     results: function(data, page) { 
      alert(results); 
      return { 
       results: data 
      } 
     }, 
     formatResult: function(data) { 
      return data.text; 
     }, 
     formatSelection: function(data) { 
      return data.id; 
     }, 
     escapeMarkup: function(m) { 
      return m; 
     } 
    } 
}); 

Использование Фидлер, я могу видеть, что я получаю правильный возврат из autocomplete_sponsor.aspx, например: -

[{"id":"12","text":"Smiths"},{"id":"118","text":"Dr Smiths"}] 

Однако ничего что происходит с контролем вообще. Она либо висит на «нет Поиска», или ничего ... Я проверил инструменты разработчика и есть ошибка: -

Uncaught TypeError: Cannot read property 'slice' of undefined 

Я посмотрел на некоторых других решениях на SO, и пробовала различный рефакторинг из мой код, чтобы заставить это работать, но у меня теперь официально закончились идеи .... надеясь, что это действительно просто, я пропустил.

+0

Если вы можете включить трассировку для этой ошибки, это может дать некоторое представление о проблеме. –

ответ

4

Select2 просто кажется, нужен объект Javascript вместо строки JSON. Данный код используется для select2 v4.0.3, поэтому results был заменен на processResults.

$("#Spon_Index").select2({ 
    placeholder: "Type to select a sponsor", 
    minimumInputLength: 3, 
    multiple: false, 
    width: 400, 
    ajax: { 
     url: "../control/autocomplete_sponsor.aspx", 
     data: function(term) { 
      return term; 
     }, 
     processResults: function(data, page) { 
      return { results: JSON.parse(data) }; 
     }, 
    } 
});