typeahead和playframework alert显示数据,但建议未定义

时间:2014-04-26 07:38:00

标签: json twitter-bootstrap playframework twitter-bootstrap-3 typeahead.js

我正在尝试将Typeahead与Bootstrap 3一起用于搜索框上的自动完成功能。

当我对服务器进行Ajax调用时,我得到了Json的响应。当我将响应传递给typeahead的过程时,我得到的建议是未定义的。但如果我打印它控制台或警报我看到从服务器返回的数据。

以下是代码

javascript代码

$('#search-box .typeahead').typeahead({

  hint: true,
  highlight: true,
  minLength: 1
},
{
  source: function (query, process) {
      return $.ajax({
            url: "/type_assist/" + query,
            type: "GET",
            dataType: "JSON",
            async: false,
            success: function (data) {
                alert(data)
                return typeof data == 'undefined' ? false : process(data);
            }
        }); 
  }

});

和java脚本中处理url的java代码。我正在使用import play.libs.Json;

SortedSet<String> set =  CityZipTypeAssist(charInput);      
        return ok(Json.toJson(set));

由于

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题..这是javascript中的一些变化,不得不将响应添加到数组对象中,然后将其传递给下面的进程是代码

    displayKey: 'value',
  source: function (query, process) {
      return $.ajax({
            url: "/type_assist/" + query,
            type: "GET",
            dataType: "JSON",
            async: false,

            success: function (data) {
                var suggestions = [];
                  $.each(data, function(key, val) {
                      var obj = {};
                      obj.label = val;

                      suggestions.push({ value: val });
              });
                  return typeof data == 'undefined' ? false : process(suggestions);
            }
        }); 
  }

});