Каков правильный способ обработки исключений, создаваемых кодом typeahead/Bloodhound?

Если данные недоступны на сервере или возникает ошибка сервера, или данные сервера являются нулевыми, javascript выдает исключение obj is null. Как поймать это исключение?

Поиск в stackoverflow результатов не дал.

Вот код:

var test1 = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.tokenizers.whitespace(d.value);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: "http://URL?query=",

        replace: function(url, query) {
            return url + "" + query;
        }
    }
});

test1.initialize();

$('#idOfAutoCompleteTextBox').typeahead({
    hint: true,
    highlight: true,
    minLength: 1
},
{
    name: 'test1',
    displayKey: 'value',
    source: test1.ttAdapter()
});

person yW0K5o    schedule 26.06.2014    source источник


Ответы (1)


Я не уверен, что это решение вашей проблемы, но в настоящее время у меня такое же исключение javascript при обработке пустого результата (typeahead 0.11.1).

В файле удаленного URL-адреса, когда массив пуст, выведите что-то, что не в формате JSON.

JavaScript

  var termekek = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('megnev'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
      url: _BASE_ +  'components/com_rexwebshop/include/keres.php?q=%QUERY',
      wildcard: '%QUERY'
    }
  });

  jQuery('.typeahead').typeahead(null, {
    name: 'rs3ws-termekek',
    display: 'megnev',
    source: termekek,
      templates: {
        empty: [
          '<div class="empty-message">',
            '<? echo JTEXT::_('Nincs találat') ?>',
          '</div>'
        ].join('\n'),
        suggestion: Handlebars.compile('<div><strong>{{megnev}}</strong> – {{bruttoar}}</div>')
      }
  });

PHP

  // [collecting data]

  if ( count($rows) == 0 ) 
    echo "_NOT_FOUND_";
  else
    echo json_encode($rows, JSON_UNESCAPED_SLASHES);
person Baracsi Róbert    schedule 04.06.2015
comment
Не могли бы вы уточнить, как это может помочь решить проблему в вопросе исходного автора? Я не совсем понимаю вас. - person Kmeixner; 04.06.2015
comment
удаленный источник php в вопросе отсутствует, поэтому я не мог дать точное решение - person Baracsi Róbert; 04.06.2015