首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理typeahead/Bloodhound代码抛出的异常的正确方法是什么?

处理typeahead/Bloodhound代码抛出的异常的正确方法是什么?
EN

Stack Overflow用户
提问于 2014-06-26 23:04:12
回答 1查看 465关注 0票数 2

如果数据在服务器中不可用,或者服务器出错,或者服务器数据为空,javascript会抛出异常obj is null。如何捕获此异常?

在stackoverflow中搜索没有给出任何结果。

代码如下:

代码语言:javascript
复制
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()
});
EN

回答 1

Stack Overflow用户

发布于 2015-06-04 22:06:17

我不确定这是不是你的问题的解决方案,但目前我在处理空结果时遇到了相同的javascript异常(typeahead 0.11.1)。

当array为空时,在远程URL文件中回显非JSON格式的内容。

JavaScript

代码语言: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

代码语言:javascript
复制
  // [collecting data]

  if ( count($rows) == 0 ) 
    echo "_NOT_FOUND_";
  else
    echo json_encode($rows, JSON_UNESCAPED_SLASHES);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24434002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档